본문 바로가기

개발 학습/블록체인31

클레이튼 트랜잭션 처리시 "invalid unit price" 프로젝트3에서 만든 staking에 추가적인 기능을 구현해보려고 하는도중에 잘 예치해둔 10개의 KFT토큰을 출금하거나 현재 발생된 예치이자를 출금하려고하니.. 다음과 같은 오류가 발생했다. 처음에는 출금 메소드안에 들어 갈 숫자가 toWei나 toFrom으로 쓰지말고 caver에서 제공하는 convertToPeb의 convert를 사용하지 않아서 그런가?.. 하며 생각해보았지만 이전에는 잘 작동 됐는데 갑자기 안된다는 것에서 새로운 업데이트가 있었는지 확인해보았다. 클레이튼 공지사항을 보니 3월3일자로 GAS비가 변경이 돼었다. https://medium.com/klaytn-kr/notice-gas-price-adjustment-announcement-kr-6e45db8056c0 그래서 기존에 send.. 2022. 4. 2.
지속 연결 네트워크를 위한 static.nodes.json bootnode를 만들어 연결하면 연결중일때는 피어가 네트워크에 연결이 잘 되지만 geth를 종료하고 다시 bootnode에 연결하려고하면 되지 않는 문제가 발생한다. 이유는 기존노드를 실행한 후 admin.addPeer()를 사용해 테스트네트워크를 만들고 피어를 연결했으나, geth 종료후 지정된 노드에 다시 연결 되지 않는다. 그래서 geth가 실행 될 때마다 지정된 노드로 연결 해주는 json을 작성해보자. static.nodes.json을 만들것이며 노드1폴더 즉, /root/go-ethereum/test_node1에 만들자. vim static-nodes.json [ "enode://12asidmascasleamncmacm77fca13afd2e46c04a1c1a83aa92fbc30f07a7495.. 2022. 2. 21.
Docker로 노드 운영 (5) : 부트노드 운용 부트노트란 지난번처럼 docker로 노드1과 노드2를 운용할때 노드2에 노드1의 enode를 직접 admin.addPair로 추가해줘야했다. 만약 노드수가 많아진다면 일일이 이렇게 추가해주는것이 힘들고 그런 경우를 위해 부트노드를 운영하여 부트노드에 모든 기존노드와 새노드를 연결하면 부트노드가 중개자 역할을 하여 기존의 노드가 가진 데이터를 부트노드에 연결한 새 노드들에게 전달하고 동기화 할 수 있게 해준다.  2. 부트노드 구성 하기apt-get install bootnode부트노드 패키지를 설치한다. 노드 1과 노드2를 각각 연결하기 위해 지난번 노드1,2 연결하기 처럼 docker의 exec를 이용해 우선 노드1부터 docker로 접근한다. # 실행중인 container list 확인docker p.. 2022. 2. 21.
Docker로 노드 운영 (4) : 두 개의 노드 연결하기 우리는 Docker에서 한 노드를 로컬에서 운영했다. 노드를 하나 돌리면 인접 노드가 참여하게 되면 인접노드는 기존노드와 연결되어 기존의 데이터를 가져와서 서로 동기화하는 작업을 하게된다. 이것을 Docker안에서 구현해보자. 우선 터미널을 두개 작동시켜야하는데 도커CLI에서 기존의 attach를 사용하면 서로 다른 터미널로 접속하더라도 하나의 도커터미널에 연결되므로 각각 서로 다른 화면이 되도록 해야한다. 실행중인 Docker 컨테이너를 확인하고 컨테이너 이름을 체크한 뒤 exec명령어 하나의 도커에서 여러 활동을 할 수 있게 한다.1. Docker 터미널 2개 열기# 실행중인 container list 확인docker ps -a# container 실행; 여기서는 'con_ubuntu'docker s.. 2022. 2. 19.
Docker로 노드 운영 (3) : Geth로 채굴, 트랜잭션 생성 지금까지 나만의 프라이빗 블록체인을 작동시킬 준비가 끝이났다. 이제 제네시스 블록의 생성을 하고 블록체인이 돌아갈것이고 채굴과 내부에서 코인을 전송하고 트랜잭션을 날리고 조회하는 등 여러가지 작업을 해보자  1. Geth 실행$ geth --networkid 8484 --nodiscover --datadir test_data -allow-insecure-unlock --http.addr 0.0.0.0 --http --http.port 8545 --http.corsdomain "*" --http.api="db,eth,net,web3,personal,web3,miner,admin" --miner.threads 1 console 2>> test_data/geth.log명령어에서 의미하는 것들은 다음과 같다.d.. 2022. 2. 19.
Docker로 노드 운영 (2) : 계정 및 제네시스 블록 생성 1. Geth로 계정생성우선 로컬테스넷에서 나만의 프라이빗 블록체인을 만들고 거기서 첫 제네시스 블록부터 계정생성 ~ 채굴까지 해볼것이다. 로컬에서 geth를 시작하기전에 데이터디렉토리와 genesis.json파일이 필요하다 이 genesis.sjon은 제네시스 블록정보가 저장된 json형태 파일이다 데이터 디렉토리는 송수신한 블록데이터와 계정정보를 저장하게 된다. 제네시스 블록이라하면 뭔가 가슴이 웅장해진다.. 먼저 데이터디렉토리와 그 안에 genesis.json을 만든다. $ sudo mkdir test_data $ cd test_data $ vi genesus.json 자! 이제 준비가 다 됐고 geth console로 계정을 생성해보자!!! $ geth --datadir test_dat.. 2022. 2. 19.