Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 도커 레이어
- Python
- 동명이인찾기
- geojson
- 패치분할
- 파이썬
- 이미지빌드
- STL
- 3d데이터
- 좌표거리
- GCN
- Set
- 3d
- 컨테이너
- GNN
- docker
- geopandas
- graph
- pyvista
- 폴더조사
- 그리드분할
- osmnx
- 귀여운고래
- python최단거리
- 알고리즘
- 도커
- 데이터입수
- MESH
- 지하철역좌표
- GIS
Archives
- Today
- Total
이것저것 기록
[solidity] 스마트컨트랙트 배포하기 본문
스마트 컨트랙트 생성 순서
1. 스마트 컨트랙트 코드 작성 (.sol)
pragma solidity ^0.8.0;
// solcjs --version 로 버전확인
contract hello {
string value;
constructor(){
value = "hello solidity";
}
// 파일에 저장된 내용을 가져올 것인지? storage
// 메모리에 저장된 내용을 가져올 것인지? memory
function get() public view returns(string memory){
return value;
}
//solcjs --bin --abi .\hello.sol
// 파일명_확장자_컨트랙트명
}
- hello_sol.sol로 저장해준다
2. 스마트 컨트랙트 코드 컴파일
- 해당 컨트랙트가 위치한 경로로 이동해서 컴파일 해야함
-
solcjs --abi --bin [파일명]
- 성공적으로 컴파일 되었다면, 해당 폴더 안에 .abi, .bin파일이 생성되어야 함
- abi (Application Binary Interface) : 1에서 작성한 스마트 컨트랙트 코드의 설명이 담긴 JSON 파일
- bin : 바이너리 파일
3. 컴파일 결과를 배포
- '배포'한다라는 것은 블록체인 상에 컴파일한 스마트컨트랙트의 ByteCode를 Transaction에 실어 블록에 포함시킨 상태 (출처: https://lbm93.tistory.com/8)
- hello_sol.sol이 위치한 폴더에 hello_sol.js 파일 생성, 다음과 같이 입력 (출처: https://velog.io/@wlgus2134 )
onst Web3 = require('web3')
let connection = new Web3('http://127.0.0.1:8545')
// abi파일에 있는 정보들을 JSON형식으로 변형해서 ABI_CODE변수에 담아줌
const ABI_CODE = JSON.parse('[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"get","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]');
// bin 파일에 있는 정보들을 ''으로 감싸서 BYTECODE 변수에 담아줌
// bin 파일에 있는 것을 복붙하세요.
const BYTECODE = ' '
const contract = new connection.eth.Contract(ABI_CODE)
contract.deploy({
data:BYTECODE
})
// from 안에 Ganache를 돌려서 얻었던 Available Accounts중 하나를 ''로 감싸서 입력
// Gas(수수료)는 Gas Limit에 입력되어있던 6721975로 설정
.send({
from:'0x11eeC4232900708324D58ebca115566a02F59Ddd', // ganache-cli --host 0.0.0.0 입력 후 아무거나 선택
gas:'6721975'
},(error,result)=>{
console.log(error)
})
.then( data =>{
console.log(data.options.address)
})
- 터미널 창을 열어 다음 명령어 입력
-
node hello_sol.js
- 로컬 virtual 지갑을 생성하고 있는 ganache cmd창을 확인해보면, 다음과 같이 sendTransaction 결과가 나와있다.
--
얼렁뚱땅 따라하긴했는데 100% 이해가 안된다...
파이썬이 엄청 편한 언어였구나...
'Data Science > New Tech' 카테고리의 다른 글
[Docker] 도커 볼륨과 마운트 (0) | 2021.07.04 |
---|---|
[Docker] 파이썬 스크립트를 실행하는 도커 이미지 빌드하기 (1) | 2021.06.11 |
[Docker] 도커 컨테이너 실행하기 / 명령어, 옵션 정리 (0) | 2021.06.06 |
[Docker] 도커 컨테이너의 동작 원리 (LXC, namespace, cgroup) (0) | 2021.06.06 |
[Docker] 도커 이미지 내려받기, 이미지 레이어란? (1) | 2021.06.05 |
Comments