이더리움 Greeter 만들기
Greeter Contract 만들기
Greeter.sol
contract Mortal {
/* Define variable owner of the type address */
address owner;
/* This function is executed at initialization and sets the owner of the contract */
function Mortal() { owner = msg.sender; }
/* Function to recover the funds on the contract */
function kill() { if (msg.sender == owner) selfdestruct(owner); }
}
contract Greeter is Mortal {
/* Define variable greeting of the type string */
string greeting;
/* This runs when the contract is executed */
function Greeter(string _greeting) public {
greeting = _greeting;
}
/* Main function */
function greet() constant returns (string) {
return greeting;
}
}
solidity compiler 설치 및 컴파일 하기
solcjs 설치하기
npm install -g solc
컴파일 하기
solcjs -o target --bin --abi Greeter.sol
js 스크립트 작성
main.js
var greeterFactory = eth.contract(<contents of the file Greeter.abi>)
var greeterCompiled = "0x" + "<contents of the file Greeter.bin>"
var _greeting = "Hello World!"
var greeter = greeterFactory.new(_greeting,{from:eth.accounts[0],data:greeterCompiled,gas:47000000}, function(e, contract){
if(e) {
console.error(e); // If something goes wrong, at least we'll know.
return;
}
if(!contract.address) {
console.log("Contract transaction send: TransactionHash: " + contract.transactionHash + " waiting to be mined...");
} else {
console.log("Contract mined! Address: " + contract.address);
console.log(contract);
}
})
geth console 에서 스크립트 실행
loadScript("main.js")
채굴 시작 및 greeter 실행
miner.start()
채굴이 완료되면 contract에 address가 부여되고 계약이 발행된다.
이제는 블록체인 상에 greeter라는 봇이 생성되었으므로 다음과 같이 자유롭게 호출하여 사용이 가능하다.
greeter.greet();