1. RSK 설치
일단 설치를 합니다. (도중에 네트워크 선택은 regtest 로 하였습니다.)
$ sudo add-apt-repository ppa:rsksmart/rskj $ sudo apt-get update $ sudo apt-get install rskj
Mainnet : 실제 비트코인 위에서 동작하는 메인 네트워크
Testnet : 인터넷에 올라가있는 테스트 네트워크
Regtest : 로컬에서 구동하는 테스트 네트워크
자 이제 시작해 봅시다. stop, restart 도 됩니다.
sudo service rsk start
실제 실행 명령은 아래와 같습니다.
/usr/bin/java -Dlogback.configurationFile=/etc/rsk/logback.xml -cp /usr/share/rsk/rsk.jar co.rsk.Start 2>&1 &
2. Truffle 로 시작하기
이제 SmartContract 를 올려볼건데요, 일단 truffle 로 틀을 잡아주고 실행합니다.
mkdir securekim-storage
cd securekim-storage
truffle init
truffle develop
그러면 계정이 생성됩니다.
(이름은.. 심사숙고 끝에 김보안 저장소로 정했답니다..)
truffle(develop)> create contract SecurekimStorage
이러면 contracts 폴더 밑에 SecurekimStorage 가 생깁니다
├── contracts
│ ├── Migrations.sol
│ └── SecurekimStorage.sol
3. SmartContract 작성하기
이제 SmartContract 를 작성해 봅시다.
이더리움의 스마트컨트랙트와 완전히 호환되니.. solidity 로 짜면 되겠죠?
저장된 데이터를 가져오는건 누구나 할 수 있지만,
값을 저장하는 것은 deployer 만 할 수 있는 SmartContract 입니다.
SecurekimStorage.sol
pragma solidity ^0.5.0; contract SecurekimStorage { address private deployer; uint private storedData; constructor() public { deployer = msg.sender; } function set(uint n) public { if(msg.sender == deployer) storedData = n; } function get() public view returns (uint) { return storedData; } }
4. SmartContract Deploy 하기
이제 만든 SmartContract 를 Deploy 해보아야 겠죠?
migrations 폴더 밑에 2_securekim_storage.js 를 생성합니다.
├── migrations
│ ├── 1_initial_migration.js
│ └── 2_securekim_storage.js
2_securekim_storage.js
var SecurekimStorage = artifacts.require("./SecurekimStorage.sol"); module.exports = function(deployer) { deployer.deploy(SecurekimStorage); };
이제 컴파일 해봅니다.
(참고로 앞으로도 3_, 4_ ... 규칙으로 생성하셔야 실행되고 스마트컨트랙트가 디플로이 됩니다.)
truffle(develop)> compile
Compiling ./contracts/Migrations.sol...
Compiling ./contracts/SecurekimStorage.sol...
Writing artifacts to ./build/contracts
(compile 명령은 contracts 폴더 내부에 있는 모든 sol 파일을 컴파일합니다.)
truffle(develop)> migrate
자 ! 이제 로컬 블록체인 네트워크에 migrate 되었습니다.
5. SmartContract 써보기
이제 SmartContract 와 Interact 하는 시간입니다.Truffle 자체는 코드는 사실상 거대한 Javascript 코드 이며, Node 콘솔처럼 Javascript 명령을 받아 처리가 가능합니다.
자, 이제 SecurekimStorage instance 를 가져와서 securekimStorage 변수에 담아 봅니다.
truffle(develop)> var securekimStorage truffle(develop)> SecurekimStorage.deployed().then(instance => securekimStorage = instance)
securekimStorage 의 get 함수를 볼까요?
truffle(develop)> securekimStorage.get{ [Function]
call: [Function],
sendTransaction: [Function],
estimateGas: [Function],
request: [Function] }
내부는 4가지 함수로 이루어져 있네요. 그렇다면 이제 get 을 하고 결과를 Number 로 바꿔봅시다.
truffle(develop)> securekimStorage.get().then(bn => bn.toNumber())
아무것도 없으니 기본값 0 이 나오네요. 이제 10을 세팅하고 다시 가져와 봅시다.
truffle(develop)> securekimStorage.set(50)
지금 까지는 이더리움이랑 똑같네요 !
다음 글에서 계속 하겠습니다.
0 개의 댓글:
댓글 쓰기