05、(进阶版)5分钟编写一个基于区块链的投票系统

本文由EOSUnion(eos.ren)优质内容计划赞助


版权声明

首发自微信公众号:新个体

作者:飞帅


这里是以太坊开发系列课程,我将带你从技术开发的角度理解以太坊,深入区块链底层,以最清晰的视角与区块链零距离亲密接触。

在这里,我将带你挖矿,开发自己的代币,编写智能合约还有其他有趣的Dapp应用!


前置课程:

01、以太坊开发入门指南 - 快速理解核心概念

02、以太坊windows下的开发环境搭建

03、搭建以太坊网络,挖矿生产以太币ETH

04、编写第一个智能合约 : 投票合约的开发部署和执行

https://mp.weixin.qq.com/s/b7I4c8zdgJFmiEfZP83XSA


本期内容:

1、用代码创建账号,账号转账,解锁账号

2、用代码部署智能合约

3、用代码执行智能合约

一、用代码创建账号,账号转账,解锁账号

钱包中有一个主账号:"0xb41f9c14be264283bea8ee75016c1782a19b9ba9"

image

查看主账号余额:

eth.getBalance(eth.accounts[0])

创建新账号:

personal.newAccount('123456')

参数数账号密码:123456

查看账号列表:

eth.accounts

查看新账号余额:

eth.getBalance(eth.accounts[1])

image

钱包中可以看到两个账号和余额:

image

账号需要解锁,解锁操作:

personal.unlockAccount(eth.accounts[0],"1q2w3e4r");

账号转账:

eth.sendTransaction({from: '0xb41f9c14be264283bea8ee75016c1782a19b9ba9', to: '0xdd21b95398ec6e42328aec631160d02bf1b00e63', value: web3.toWei(1, "ether")})

钱包中可以看到账号2多了1个ether:

image

这里将新账号也解锁:

personal.unlockAccount(eth.accounts[1],"123456");

转账效果如下:

image

二、用代码部署智能合约

打开Browser-Solidityhttps://ethereum.github.io/browser-solidity/

将下面智能合约代码拷贝到代码区:

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;
    }
    
}
image

点击右边的detail:

image

找到web3deploy部分,复制代码:

image

复制代码如下,修改了两个变量的变量名:

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控制输出日志:

image

查看后台后台日志,可以看到合约创建成功!

|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

三、用代码执行智能合约

1、获取合约实例

contractInstance = votecontractContract.at(voteContractDeploy.address)

2、合约调用

image
image

更多精彩,欢迎关注公众号“新个体”
image
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容