本文由EOSUnion(eos.ren)優(yōu)質內容計劃贊助
版權聲明
首發(fā)自微信公眾號:新個體
作者:飛帥
這里是以太坊開發(fā)系列課程,我將帶你從技術開發(fā)的角度理解以太坊,深入區(qū)塊鏈底層,以最清晰的視角與區(qū)塊鏈零距離親密接觸。
在這里,我將帶你挖礦,開發(fā)自己的代幣,編寫智能合約還有其他有趣的Dapp應用!
前置課程:
02、以太坊windows下的開發(fā)環(huán)境搭建
04、編寫第一個智能合約 : 投票合約的開發(fā)部署和執(zhí)行
https://mp.weixin.qq.com/s/b7I4c8zdgJFmiEfZP83XSA
本期內容:
1、用代碼創(chuàng)建賬號,賬號轉賬,解鎖賬號
2、用代碼部署智能合約
3、用代碼執(zhí)行智能合約
一、用代碼創(chuàng)建賬號,賬號轉賬,解鎖賬號
錢包中有一個主賬號:"0xb41f9c14be264283bea8ee75016c1782a19b9ba9"

查看主賬號余額:
eth.getBalance(eth.accounts[0])
創(chuàng)建新賬號:
personal.newAccount('123456')
參數數賬號密碼:123456
查看賬號列表:
eth.accounts
查看新賬號余額:
eth.getBalance(eth.accounts[1])

錢包中可以看到兩個賬號和余額:

賬號需要解鎖,解鎖操作:
personal.unlockAccount(eth.accounts[0],"1q2w3e4r");
賬號轉賬:
eth.sendTransaction({from: '0xb41f9c14be264283bea8ee75016c1782a19b9ba9', to: '0xdd21b95398ec6e42328aec631160d02bf1b00e63', value: web3.toWei(1, "ether")})
錢包中可以看到賬號2多了1個ether:

這里將新賬號也解鎖:
personal.unlockAccount(eth.accounts[1],"123456");
轉賬效果如下:

二、用代碼部署智能合約
打開Browser-Solidity:https://ethereum.github.io/browser-solidity/
將下面智能合約代碼拷貝到代碼區(qū):
pragma solidity ^0.4.18;
/**
* Author:Ethan.Zhou(飛帥)
* 公眾號:xingeti(新個體)
*/
contract VoteContract {
//記錄投票值
uint cnt = 1;
/* 構造函數 */
function construtor() pure public {
}
/*投票函數,將投票值加1*/
function vote() public {
cnt ++;
}
/*獲取投票值*/
function getVote() constant public returns (uint) {
return cnt;
}
}

點擊右邊的detail:

找到web3deploy部分,復制代碼:

復制代碼如下,修改了兩個變量的變量名:
var voteContract = web3.eth.contract([{"constant":true,"inputs":[],"name":"getVote","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"vote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"construtor","outputs":[],"payable":false,"stateMutability":"pure","type":"function"}]);
var voteContractDeploy = votecontractContract.new(
{
from: web3.eth.accounts[1],
data: '0x6080604052600160005534801561001557600080fd5b5060f2806100246000396000f3006080604052600436106053576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630242f351146058578063632a9a5214608057806367fb2a66146094575b600080fd5b348015606357600080fd5b50606a60a8565b6040518082815260200191505060405180910390f35b348015608b57600080fd5b50609260b1565b005b348015609f57600080fd5b5060a660c4565b005b60008054905090565b6000808154809291906001019190505550565b5600a165627a7a72305820f12c095e03457a951742506b168ed4426792bd46cfc0d11d272e9c514c173b1b0029',
gas: '4700000'
}, function (e, contract){
console.log(e, contract);
if (typeof contract.address !== 'undefined') {
console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
}
})
將代碼拷貝到geth控制臺,部署合約。
部署成功后,geth控制輸出日志:

查看后臺后臺日志,可以看到合約創(chuàng)建成功!
|16:05:42] ?? mined potential block number=32 hash=77aa13…cdc066
|16:05:43] Successfully sealed new block number=33 hash=ad395e…c3eb18
|16:05:43] ?? block reached canonical chain number=28 hash=94a823…15c72c
|16:05:43] Commit new mining work number=34 txs=0 uncles=0 elapsed=0s
|16:05:43] ?? mined potential block number=33 hash=ad395e…c3eb18
|16:27:19] Submitted contract creation fullhash=0xc515d05b14a3e932f2f54ac966334d106c8b7c175fd4f135793ff481fea0417e contract=0x0137d67b4a894Dd75245D9A464109C9729Eaa55E
三、用代碼執(zhí)行智能合約
1、獲取合約實例
contractInstance = votecontractContract.at(voteContractDeploy.address)
2、合約調用


更多精彩,歡迎關注公眾號“新個體”
