솔리디티(solidity) - 배열, memory 솔리디티(solidity)에서 배열을 사용하는 방법을 한 번 알아보도록 하겠습니다. 위 예시는 uint형 배열을 생성하는데, 배열길이는 3이며, memory키워드를 사용해서 함수 밖에서는 사라지도록 한 것 입니다.memory keyword 메모리 키워드는 storage에 내용을 저장하지 않고 그저 함수 내부에서만 사용되었다가 사라지는 메모리를 사용할 때 쓰는 키워드 입니다. 즉 위에서 선언해준 배열은 해당함수를 벗어나게되면 사라지게됩니다. 물론, storage 공간을 사용하지 않으므로 가스를 훨신 많이 절약할 수 있게됩니다. 위와 같은 예시로 반환값을 uint형 배열로 설정하고 반환해주는 모습입니다. 새롭게 생성시에는 new키워드를 사용하며 여기서는 기존..
솔리디티(solidity) - 포인터 storage, struct 전달 데이터를 직접 찾는 대신에 포인터를 즉 참조를 전달하게되면 직접 찾을 필요없이 바로 수정이가능하므로 아주 편리하다. 이더리움의 솔리디티도 그러한 기능을 가지고있다. 위와같이 좀비라는 구조체를 전달하는 함수가있는데, storage 키워드를 사용해서 포인터(참조)를 전달해줄 수 있다. 즉 위 함수에서는 외부에 있는 좀비 구조체를 참조하여 그 곳에 직접 저장(관리)이 가능한 것이다. modifier 내용추가 이전 글에서 modifier에 대해서 언급하지 않은 부분이 있어서 추가합니다. modifier는 인수도 전달받을 수 있고 그 인수를 활용해서 보다 구체적인 검사수행이 가능합니다. 위와같이 사용하는 방법은 간단한 예시입니다. 위에 있는 ..
솔리디티(solidity) - 시간단위 함수 now 사용하기 솔리디티에선 현재 시간을 나타낼 수 있는 now를 사용해서 시간과 관련된 개발이 가능합니다. (유닉스 시간을 사용합니다. 유닉스 시간이란 지정해준 년도시부터 지금까지의 초의합입니다.) 위는 간단한 예시입니다. 업데이트 타임스탬프를 사용해서 라스트업데이트 변수를 현재시간으로 업데이트 시켜주며 now를 사용했습니다. 그리고 5분이 지났는지를 판별할 수 있는 함수를 구현했습니다. 이때 minutes를 사용해서 분이라는 것을 명시할 수 있습니다. 추가적으로 seconds, minutes, hours, days, weeks, years 키워드가 있으니 필요에 맞게 사용하면 되겠습니다.now는 기본적으로 uint256반환 이때 now는 기본적으로 uint..
이더리움(Ethereum) Gas, 가스 사용료 줄이기를 위한 압축 이더리움 Dapp에 우리가 만든 함수를 다른 사람들이 이용하려면 그 사람들은 Gas(가스)를 지불해야한다. 가스란 일종의 연료로 이더리움(Ethereum)으로 구매해서 사용하게된다. 이러한 가스는 함수의 로직(구조)가 얼마나 복잡한 지에 따라서 지불 비용이 달라지게된다. 즉, 많은 연산을 수행해야하는 구조의 복잡한 함수는 더 많은 양의 가스(gas)가 필요하게되고, 간단한 함수는 그 양이 적을 것이다. 하지만, 최적화가 되지않은 함수에 대해서도 가스가 더 많이 지불 될 수 있으니 이더리움 컨트랙트 개발에서는 최적화가 필수라고 할 수 있다. 그래서 기본인 압축을 알아보려고한다. uint 8, 16, 32, 128, 256 일반적으로 uin..
솔리디티(solidity) 생성자, modifier, import, 상속 솔리디티는 이더리움의 스마트컨트랙트 개발용 언어로 이더리움만의 자체 언어입니다. 스마트계약에서 그리고 이더리움네트워크 에서 돌아간다는 것 빼고는 다른 언어와 별 다른 차이점이 없지만, 알아야하는 문법은 존재합니다.생성자 위는 생성자 예시입니다. Ownable이라는 컨트랙트(contract)가 있고 그 이름을 똑같이 가지는 생성자(함수)는 바로 밑에 처럼 function으로 해주며 접근 지정자는 public으로 지정해줍니다. (다른 언어와 다른 점은 접근 지정자를 마지막에 붙여줍니다.) 함수 제어자(modifier) 함수제어자는 함수가 실행되기전에 요구조건을 만족시키는지 확인하는 작업을 해준다. 위에서는 오너와 현재 메세지 보내는 사..