본문 바로가기

개발 일지/블록체인6

내 프라이빗 블록체인에서 입출금 트랜잭션 데몬구현 우선 이전에 작성한 글에선 docker에 컨테이너를 만들때 생성단계에서 포트를 부여하지 않았다. 그래서 기존 2개의 노드를 연결해주는 방식으로 노드를 운영했더니 서버단에서 블록체인 네트워크에 접속 할 때 localhost:8545로 접속하면 아래와 같이 오류가 나왔다. 내가 만든 프라이빗 블록체인 네트워크에 접근할 수 없는 것이다. 그리하여 이미 생성된 컨테이너에 직접포트를 부여하기엔 어렵다고 생각해 기존컨테이너를 이미지화하고 그 이미지로 새로운 컨테이너를 생성하며 포트를 부여하는 방법을 사용하였다. 1. 포트를 연 새 컨테이너를 만들자 생성한 con_ubuntu를 이미지로 먼저 만들어보자. sudo docker ps 해당 명령어로 con_ubuntu 컨테이너가 작동중인지 확인하자. sudo docker.. 2022. 2. 19.
S4: EtherscanAPI로 Verify & publish 하는법 POST맨으로 인증하기 ropsten 네트워크에 올라간 컨트랙트 주소를 확인한뒤 해당 주소에 etherscan에서 contract 부분에 verify & publish를 할 것이다. data: { apikey: $('#apikey').val(), // 이더스캔 본인 API키 module: 'contract', //Do not change action: 'verifysourcecode', //Do not change contractaddress: $('#contractaddress').val(), // verify할 컨트랙트 주소 sourceCode: $('#sourceCode').val(), // verify할 컨트랙트의 소스 codeformat: $('#codeformat').val(), // 코드 포.. 2021. 12. 9.
S4: Credential 발급/조회 + 추가기능 전체코드 // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.10; abstract contract OwnerHelper { //추상컨트랙트로 Owner에 의한 처리를 위한 컨트랙트 address private owner; //owner는 private로 주소타입 event OwnerTransferPropose(address indexed _from, address indexed _to); //OwnerTransferPropose가 emit되면 log가 기록된다. //인자로 현재 owner주소, 새owner주소가 들어간다. modifier onlyOwner { //onlyOwner가 실행되는 함수는 아래 require를 처리한뒤 작동된다. require(m.. 2021. 12. 3.
S4: 간단한 Credential 발급/조회 졸업증명서 개발하기 claimCredential 으로 발행 => getCredential로 발행주소로부터 VC확인 struct Credential{ uint256 id; address issuer; uint8 alumniType; string value; } Credential 구조 { id: index순서로 idCount; issuer: 발급자로써 크리덴셜을 생성하고 보유자(holder)에게 전달; alumniType: 졸업증명서 타입; value: 크리덴셜에 포함되어야하는 정보, 서명 등 JSON 형태로 저장; } function claimCredential(address _alumniAddress, uint8 _alumniType, string calldata _value) public return.. 2021. 12. 3.
S4: Truffle과 openzeppelin, ganache로 배포하기 VSCODE와 openzeppelin으로 배포하기 MyNFTs.sol로 nft컨트랙트를 작성 한 뒤 내부 mintNFT를 통해 NFT를 발행하는 코드를 truffle로 컴파일하여 openzeppelin으로 배포하려고 한다. 1.initial_migration 을 수정하여 순서대로 contracts폴더안에 든 sol파일이 배포되도록한다. openzeppelin으로 배포하기 트러플 config에서 ganache로 네트워크 이름을 주고 ganache-cli상 host와 port를 적용시킨다. ganache-cli로 네트워크를 연다. 트러플 옵션중에 --network와 함께 뒤에 쓸 네트워크정보는 트러플 config에서 정보를 추가하고 사용하면 된다. 다른 터미널을 통해 truffle migrate --comp.. 2021. 11. 30.
S4: Solidity 가위바위보 게임 //SPDX-License-Identifier: MIT pragma solidity ^0.8.7; contract RPS{ constructor () payable {} enum Hand { rock, paper, scissors //플레이어가 낼 수 있는 가위바위보를 열거형으로 지정 } enum PlayerStatus { STATUS_WIN, STATUS_LOSE, STATUS_TIE, STATUS_PENDING //플레이어 상태를 열거형으로 지정 } enum GameStatus{ STATUS_NOT_STARTED, STATUS_STARTED, STATUS_COMPLETE, STATUS_ERROR //게임상태를 열거형으로 지정 } struct Player{ //플레이어가 가질수 있는 정보들 addres.. 2021. 11. 25.