우리는 일반적으로 코인을 교환할 때 중앙화된 거래소를 통해 거래합니다.법정통화(원, 달러 등)를 코인과 교환하려면 Bithumb이나 Upbit같은 거래소에서 구입하거나, 코인 보유자를 직접 만나는 방법밖에는 없죠.하지만 탈중앙화된 코인끼리 거래할 때도 거래소를 통해 할 수 밖에 없을까요?탈중앙화 되어있는 코인끼리 교환하는데 중앙화 된 서비스를 이용한다는 것은 블록체인에서 다루는 가장 큰 가치가 훼손되는 일입니다. 그렇다면 어떤 방법으로 중개자 없이 코인끼리 교환할 수 있을까요?전통적인 방법을 생각해보겠습니다.A 코인 사용자 Alice와 B 코인 사용자 Bob이 각자의 코인을 교환하는 과정을 생각해보겠습니다. 1 ) Alice가 10A를 Bob의 A 코인 주소로 전송2 ) Bob이 A 코인 수신을 확인하고..
컨트랙트를 배포하고 테스트 하는 과정에서 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..
openjdk-X-jre-headless는 GUI가 있지 않은 프로그램을 실행할 때 사용한다.통상 서버에서 구동하는 프로그램은 GUI를 사용하지 않기 때문에 headless 버전으로 설치하면 된다. sudo apt install oepnjdk-8-jre-headless JDK와 JRE의 경우는 개발 키트 포함 여부가 다르다.JRE는 Java 프로그램을 실행하는 환경만 설치된다. https://stackoverflow.com/questions/24280872/difference-between-openjdk-6-jre-openjdk-6-jre-headless-openjdk-6-jre-libhttps://packages.debian.org/wheezy/openjdk-6-jre-headless
터미널 창을 녹화하는 프로그램을 소개하겠습니다.많은 개발자 분들이 터미널 창에서 작업을 하고 있습니다.공부 및 정보 공유를 위해 터미널 화면을 녹화하고 싶은 분들이 많을 것 같아 공유하려 합니다. asciinema 라는 프로그램입니다. 설치도 쉽고 녹화도 쉽고 공유 및 포스팅 하기는 더 쉽습니다 다만 OSX, Linux, BSD 환경에서만 사용할 수 있습니다.윈도우 사용자분들은 아쉬운 소식이네요 설치 brew install asciinema 아주 쉽습니다.소스 설치 하는 경우는 Python 3가 필요합니다. git clone https://github.com/asciinema/asciinema.git cd asciinema python3 -m asciinema --version 녹화 및 실행 asciin..
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는 코인을 보유하고 있는 사람이 새로운 블록 생성에 참여하는 방식입니다. 코인을 보유하고 있는 양에 따라 영향력이 달라지며, 작업 증명 방식에 비해 중앙화 비용이 훨씬 증가하게 됩니다. 하지만 단순히 중앙화를 위한 비용을 증가 시키는 것만으로는 블록체인의 안전성을 유지하는데 충분하지 않습니다. 비트코인의 경우 기존 블록체인을 대채하기 위한 새 블록체인 분기를 만드는데 전기세 이외에는 비용이 발생하지 않습니다. 따라서 분기를 만드는데 실패해도 기존 장..