From 8bc2d2e0ad9f0a2a6bfe04c6eafa4b27b6658a0b Mon Sep 17 00:00:00 2001 From: Lucy Oh <56earls@gmail.com> Date: Mon, 16 Dec 2024 22:37:35 +0900 Subject: [PATCH] =?UTF-8?q?Add:=20=EC=8A=A4=EB=A7=88=ED=8A=B8=20=EC=BB=A8?= =?UTF-8?q?=ED=8A=B8=EB=9E=99=ED=8A=B8=20=EC=8B=A4=ED=96=89=ED=95=98?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _posts/2024-12-13-install-solidity.md | 32 -- _posts/2024-12-16-run-smart-contract.md | 295 ++++++++++++++++++ .../img/2024-12-16-run-smart-contract/0.png | Bin 0 -> 39373 bytes 3 files changed, 295 insertions(+), 32 deletions(-) delete mode 100644 _posts/2024-12-13-install-solidity.md create mode 100644 _posts/2024-12-16-run-smart-contract.md create mode 100644 assets/img/2024-12-16-run-smart-contract/0.png diff --git a/_posts/2024-12-13-install-solidity.md b/_posts/2024-12-13-install-solidity.md deleted file mode 100644 index 6720e5b..0000000 --- a/_posts/2024-12-13-install-solidity.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Solidity 설치하기 -date: 2024-12-13 19:19:00 +/-TTTT -categories: [Security, Blockchain] -tags: [security, blockchain, solidity, ethereum] -math: true ---- - -## Solidity Compiler 설치하기 - -npm을 이용하여 설치해보자. - -```shell -% sudo npm install -g solc -``` - -## 프로그래밍 예제 - -> VSC에서 `hello.sol` 파일을 만들고 프로그래밍 해보자. - -``` -// SPDX-License-Identifier: UNLICENSED -pragma solidity 0.8.28; - -contract hello{ - string message = "Hello world!"; - function showMsg() public view returns (string memory){ - return message; - } -} -``` - diff --git a/_posts/2024-12-16-run-smart-contract.md b/_posts/2024-12-16-run-smart-contract.md new file mode 100644 index 0000000..3a3cc5d --- /dev/null +++ b/_posts/2024-12-16-run-smart-contract.md @@ -0,0 +1,295 @@ +--- +title: 스마트 컨트랙트 실행하기 +date: 2024-12-16 12:22:00 +/-TTTT +categories: [Security, Blockchain] +tags: [security, blockchain, geth, ethereum, smart-contract, troubleshooting] +math: true +--- + +## Solidity Compiler 설치하기 + +npm을 이용하여 설치해보자. + +```shell +% sudo npm install -g solc +``` + +## 프로그래밍 예제 + +> VSC에서 `hello.sol` 파일을 만들고 프로그래밍 해보자. + +``` +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.4.24; + +contract hello{ + string message = "Hello world!"; + function showMsg() public view returns (string memory){ + return message; + } +} +``` + +## 컴파일 + +> npm을 이용하여 설치해주었기 때문에, 기본 명령어가 `solc` 가 아닌 `solcjs`이다! +{: .prompt-info} + +```shell +% solcjs --abi --bin hello.sol +``` + +성공적으로 컴파일이 되면 해당 폴더 내 .abi, .bin파일이 생성된다. + +- abi (Application Binary Interface) : 스마트 컨트랙트 코드의 설명이 담긴 JSON 파일 + - 어떤 함수가 들어있는지 설명하는 것. +- bin : 컴파일 된 바이너리 파일 + +## 실행하기 + +### 콘솔 접속 + +먼저, 미리 만들어둔 사설 네트워크의 콘솔에 접속한다. + +> 필자는 포트가 다른 프로세스와 겹쳐 임시로 30000으로 설정하였다. + +```shell +geth --datadir cslab --port 30000 --nodiscover console +``` + +콘솔에서 `bin`, `abi` 변수를 각각 설정한다. +- `bin` : 컴파일된 bin파일을 설정해줌. +- `abi` : json파일 객체 그대로 설정. + +### 변수 설정 + +> bin 변수 설정 + +- bin파일을 그대로 복사하여 앞에 16진수를 의미하는 0x를 붙여 변수로 설정한다. +- 또한 문자열을 의미하는 "" 따옴표로 감싸서 변수 설정을 해준다. +```shell +> bin = "0x{컴파일된 16진수 bin파일 내용}" +``` + + +> abi 변수 설정 + +- bin과 다르게 string 문자열이 아닌 객체 형태로 바로 설정한다. + +```shell +> abi = [{"inputs":[],"name":"showMsg","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}] + +// 결과 +[{ + inputs: [], + name: "showMsg", + outputs: [{ + internalType: "string", + name: "", + type: "string" + }], + stateMutability: "view", + type: "function" +}] +``` + +### 이더리움에서 실행하기 + +`sendTransaction()` 함수는 주소를 반환한다. +- 여기서는 `tx`라는 변수에 주소를 저장한다. + +```shell +> tx = eth.sendTransaction({from: eth.accounts[0], data: bin}) +``` + +
+ +하지만 위 명령어를 실행하면 다음과 같이 Authentication 에러가 발생한다. + +![img](/assets/img/2024-12-16-run-smart-contract/0.png){: w="400" }{: .shadow} + +그러므로, 0번 계좌의 비밀번호를 풀어주는 과정이 필요하다. + +```shell +> personal.unlockAccount(eth.accounts[0]) +``` + +그리고 다시 `sendTransaction()` 을 실행시켜주면! 성공적으로 실행된다. + +### 채굴 + +하지만 현재는 바이트코드가 블록에는 들어갔으나, 다른 블록체인과 연결되지는 못한 상태이다. + +```shell +> eth.getTransactionReceipt(tx) +null +``` + +따라서 거래는 되었지만 블록체인에 연결이 되지 않아 결과값이 `null`인 것을 확인할 수 있다. + +```shell +> miner.start() +> miner.stop() +``` + +위 명령어를 통해 채굴을 시작하면 블록체인에 연결된다. 몇 초 기다린 뒤, stop() 해주도록 하자. + +그리고 다시 receipt(부가 트랜잭션 정보)를 확인하면? 다음과 같은 결과값을 얻을 수 있다. + +```shell +> eth.getTransactionReceipt(tx) +``` + +```json +{ + blockHash: "0xa49a284293d151db5b61f8cf2b50b4fc61d58e01a46b1a6ea6f10ecebf040e9f", + blockNumber: 7, + contractAddress: "0x71776219f07d03224d3c615a6fc22ad450bb3753", + cumulativeGasUsed: 3925000, + from: "0xc71a5b838cf49fd8bd7db6e1493ae0222f8acf3c", + gasUsed: 300000, + logs: [], + logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + status: "0x0", + to: null, + transactionHash: "0xaaa6c78db34de837020fb61cbfb02c4e64c75b0f745b07b52a9caac32cba4f6f", + transactionIndex: 3 +} +``` + +특히 이 결과값에서 `contractAddress`를 주로 사용하게 될 건데,
`contractAddress`란? 바이너리 코드가 들어간 위치(**스마트 컨트랙트가 들어간 블록의 주소**)이다. + +아래 명령어를 통해 contractAddress를 address라는 변수에 저장해주도록 하자. + +```shell +> address = eth.getTransactionReceipt(tx).contractAddress +"0x71776219f07d03224d3c615a6fc22ad450bb3753" +``` + +### 계약 인스턴스 가져오기 + +스마트 컨트랙트를 다음과 같이 배포하고, eth.contract()를 사용하여 계약 인스턴스를 가져오고 메서드들을 호출할 수 있다. + +```shell +> contractInterface = eth.contract(abi).at(address) +``` + +```json +{ + abi: [{ + inputs: [], + name: "showMsg", + outputs: [{...}], + stateMutability: "view", + type: "function" + }], + address: "0x71776219f07d03224d3c615a6fc22ad450bb3753", + transactionHash: null, + allEvents: function(), + showMsg: function() +} +``` + +이 내용은 위에서 작성한 `hello.sol` 코드의 내용이다. 여기서 우리가 작성한 showMsg() 함수를 실행해보자. + +### 함수 실행 + +```shell +> contractInterface.showMsg.call() +"Hello world!" +``` + +## 트러블 슈팅 + +### `Error: intrinsic gas too low` + +아래와 같은 에러가 발생한다면 배포하거나 호출하는 트랜잭션에서 가스 한도를 너무 적게 설정했을 가능성이 크다! + +```shell +> tx = eth.sendTransaction({from: eth.accounts[0], data: bin}) +Error: intrinsic gas too low + at web3.js:3143:20 + at web3.js:6347:15 + at web3.js:5081:36 + at :1:6 +``` + +다음과 같이 `gas:3000000` 충분한 가스를 할당할 경우 해결할 수 있다. + +```shell +> tx = eth.sendTransaction({from: eth.accounts[0], data: bin, gas:3000000}) +INFO [12-16|18:23:07.052] Submitted contract creation fullhash=0x7ec5f48701c964fc7563fa5f2dcc52b00f8ad5298942d444f6ce297eeac6c066 contract=0x8EC59dabc0d88eAbeed9cC869B81795Ac321673d +"0x7ec5f48701c964fc7563fa5f2dcc52b00f8ad5298942d444f6ce297eeac6c066" +``` + +#### 여기서 가스란? + +Gas(가스)는 이더리움이라는 거대한 컴퓨터를 쓰기 위한 일종의 연료이다. +- 트랜잭션을 수행하는데에 있어 네트워크에 대한 **수수료**이다. + +1. 스마트 컨트랙트를 배포할 때 +2. 함수에서 상태 변수에 변화를 줄 때 + +등등 컨트랙트 내부에서 특정 코드를 실행할 때 발생되는 수수료이다. + + +#### 해결되지 않은 의문..... + +가스 계산이 잘못된 것 같다. 내 코드에서는 상태 변수에 변화도 없고, 아주 간단하여 복잡성도 적다.. + +뭔가 세팅에서 잘못된 것 같은데.. 풀리지 않았다 + +```shell +> eth.getTransactionReceipt(tx) +{ + blockHash: "0xbb1dcbcf02bd1cdc064bfe6027e5021cc80ae9e542282091f9b58297f82f2976", + blockNumber: 58, + contractAddress: "0xa9d6fe280d6fbe013726e4f6cfb44871ff2d34b9", + cumulativeGasUsed: 199384, + from: "0xc71a5b838cf49fd8bd7db6e1493ae0222f8acf3c", + gasUsed: 199384, + logs: [], + logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + status: "0x1", + to: null, + transactionHash: "0x587427e8b4ada7cae90cc17dbb1e265df6bb3d5770fdb32db707f89dfbcc7a5e", + transactionIndex: 0 +} +``` + +이 트랜잭션에서는 199384의 gas를 사용하였는데, 왜이렇게 많이 사용했을까? 아니면 이게 일반적인 수치인가? + +공부가 더 필요하다.. + +### Error: new BigNumber() not a base 16 number: + +```shell +> contractInterface.showMsg.call() +Error: new BigNumber() not a base 16 number: + at L (bignumber.js:3:2876) + at bignumber.js:3:8435 + at a (bignumber.js:3:389) + at web3.js:1110:23 + at web3.js:1634:20 + at web3.js:826:16 + at map () + at web3.js:825:12 + at web3.js:4080:18 +``` + +뜬금없이 함수 호출할 때, 다음과 같이 `Error: new BigNumber() not a base 16 number: ` 에러가 발생하였다. + +구글링해보니 web3.js 버그.. 배포 주소 버그.. 등등에 관련한 질문이 나왔는데 **결과적으로는 solidity 컴파일러 버전과 geth 버전의 차이때문에 발생한 문제였다.** + +geth 버전은 공부하고 있는 책의 버전 대로 `1.8.13-stable`을, 하지만 solidity 컴파일러는 `0.8.x`대의 최신 버전을 사용하여 발생한 에러였다. + +```bash +% npm uninstall solc +% npm install -g solc@0.4.24 +``` + +위의 명령어를 통해 컴파일러를 삭제하고, geth 버전에 맞춘 `0.4.24` 버전으로 다운그레이드하여 해결하였다. + +물론, solidity 코드도 `pragma solidity = 0.4.24;` 로 변경하여 특정 버전의 컴파일러를 선택하도록하였다. + +Thanks to.. [힌트 주신 하나의 게시글](https://www.clien.net/service/board/cm_blockchain/13645133) \ No newline at end of file diff --git a/assets/img/2024-12-16-run-smart-contract/0.png b/assets/img/2024-12-16-run-smart-contract/0.png new file mode 100644 index 0000000000000000000000000000000000000000..5aa6010bd0cd68b9ff5e01aa27c53bde13cc5904 GIT binary patch literal 39373 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
    Bs91xoQ`nWGSZ6zgjXGd(~_iUW?y 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 literal 0 HcmV?d00001