컨트랙트를 배포하고 테스트 하는 과정에서 Invalid opcode 에러를 볼 수 있다.결론부터 적자면 이 문제를 해결하는 방법은 invalid opcode를 유발하는 것으로 추정되는 부분부터 코드를 하나 씩 지워나가는 것이다.호출하는 함수 위주로 지워나가면 비교적 쉬울 것이다.덕분에 겨우 논리오류를 유발하는 코드를 찾아냈다.개발자마다 겪는 논리 오류는 모두 다를 것이므로 아래 코드를 굳이 보지 않아도 된다. 사족으로, 테스트넷에서 함수를 실행했다면 Etherscan에서 직접 확인할 수도 있다. Opcode 0xfe는 EVM에서 지정되어있지 않은 코드이다.0xfe든 Invalid opcode든 구글 검색 시 다양한 사례를 찾을 수 있지만 적당한 솔루션을 찾지 못해 위 방법으로 해결했다.
Solidity를 배우기 가장 쉬운 도구인 CryptoZombie의 목차를 정리함Solidity의 기능에 관련된 Chapter만 네이밍하였음. Lesson 1 Chapter 1 개요Chapter 2 컨트랙트Chapter 3 변수 & 정수Chapter 4 연산Chapter 5 구조체Chapter 6 배열Chapter 7 함수 1Chapter 8 구조체 & 배열 활용Chapter 9 Private & Public 함수Chapter 10 함수 2Chapter 11 Keccak256 & 형변환Chapter 12 종합하기Chapter 13 이벤트Chapter 14 Web3.jsLesson 2 Chapter 1 개요Chapter 2 매핑과 주소Chapter 3 Msg.senderChapter 4 RequireCha..
dApp 개발 첫걸음으로 HelloWorld 스마트 컨트랙트를 만들어보았습니다.코드 작성, 컴파일 및 배포, 그리고 실행 순으로 설명하겠습니다.이더리움 깃헙 위키 등 Soilidity 예제가 잘 만들어져 있지만 괜히 HelloWorld 한번 찍어보고 싶었습니다. 개발 환경 개발 도구는 Remix를 사용합니다.Remix는 웹 브라우저 형 IDE로 아무 설치 없이 사용 가능합니다.MetaMask 지갑을 함께 사용하니 Remix와 연동되어 배포가 쉬웠습니다.따라서 본 포스팅의 실행 환경은 MetaMask를 사용하기 위해 Chrome 브라우저와 배포 이후 Geth testnet 클라이언트를 사용합니다.스마트 컨트랙 배포 확인 및 실행을 위해 Geth를 testnet과 미리 동기화 해둡니다. Geth --test..
DApp은 블록체인 네트워크 상에서 작동하기 때문에 사용자는 코드가 동작할 때마다 비용(Gas)을 지불해야합니다.따라서 개발 및 테스트를 실제 메인 네트워크에서 했다가는 엄청난 개발 비용이 발생할겁니다.이더리움 네트워크에서는 DApp 개발자를 위해 테스트넷을 준비해놓았습니다. 이더리움 테스트넷에서 사용하기 위한 코인을 얻는 방법은 2가지가 있습니다.하나는 MetaMask 지갑을 사용하는 경우 [입금]->[이더얻기]를 통해 쉽게 테스트넷 이더를 얻을 수 있습니다. 너무 많은 이더를 요청한 경우하지만 이 방법으로는 많은 이더를 얻을 수 없습니다.경우에 따라서 대량의 이더가 필요할 수 있습니다. 이번 포스팅에서는 개발에 필요한 이더를 직접 채굴하는 방법을 알아보겠습니다.이더리움은 테스트넷이 3가지가 있습니다...
지난 포스팅에서 이더리움의 POW 알고리즘인 Ethash에 대해 알아보았습니다.이더리움은 작업을 증명하기 위해 소비되는 에너지 낭비를 줄이고, 중앙 집중화의 위험을 줄이기 위해 Proof of Stake 로 전환을 시도하고 있습니다. Proof of Stake는 코인을 보유하고 있는 사람이 새로운 블록 생성에 참여하는 방식입니다. 코인을 보유하고 있는 양에 따라 영향력이 달라지며, 작업 증명 방식에 비해 중앙화 비용이 훨씬 증가하게 됩니다. 하지만 단순히 중앙화를 위한 비용을 증가 시키는 것만으로는 블록체인의 안전성을 유지하는데 충분하지 않습니다. 비트코인의 경우 기존 블록체인을 대채하기 위한 새 블록체인 분기를 만드는데 전기세 이외에는 비용이 발생하지 않습니다. 따라서 분기를 만드는데 실패해도 기존 장..
이더리움의 블록 생성 알고리즘인 Ethash에 대해 알아보겠습니다. 이더리움의 개발자 비탈릭 부테린은 이더리움의 전용 채굴기(ASIC)가 개발되는 것을 막기 위해 Ethash 알고리즘을 개발하였습니다.Ethash는 Dagger, Hashimoto 라는 두 알고리즘을 수정, 결합하여 만들어진 알고리즘입니다.Dagger, Hashimoto 두 알고리즘은 메모리를 활용하는 알고리즘으로 연산장치의 물리적인 한계를 이용해 ASIC의 효율성을 떨어뜨렸습니다. 비트코인의 채굴 과정 비트코인의 경우 위 그림처럼 암호화할 데이터만 주어지면 원하는 결과가 나올 때까지 무한히 반복합니다. 연산을 위한 불필요한 장치들을 제거한다면 채굴하기 위한 가장 적합한 장비(ASIC)를 만들어낼 수 있습니다.ASIC은 일반적인 컴퓨터 장..