【区块链学习】以Windows为例,通过以太坊钱包部署和运行智能合约

安装环境(以我个人的配置环境说明)

安装Ethereum-Wallet

(1)国内镜像下载地址
(2)在F盘新建文件夹Eth,专门放置以太坊开发环境
(3)把下载的Ethereum-Wallet-win64-0-8-10.zip压缩包解压到F:\Eth 目录下
这里写图片描述
(4)这样就ok了


安装geth

(1)国内镜像下载
(2)安装geth,我安装在F:\Eth 目录下
这里写图片描述
这里写图片描述
这里写图片描述
(3)这样就ok了


私有链搭建

环境搭建

(1)在F:\Eth 目录下创建创世块文件genesis.json,文件内容如下:

{
  "nonce": "0x0000000000000042",
  "difficulty": "0x40000",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "timestamp": "0x00",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa",
  "gasLimit": "0xffffffff",
  "alloc": {
    "3282791d6fd713f1e94f4bfd565eaa78b3a0599d": {
      "balance": "1337000000000000000000"
    },
    "17961d633bcf20a7b029a7d94b7df4da2ec5427f": {
      "balance": "229427000000000000000"
    }
  },
  "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    }
}

这里写图片描述
(2)打开cmd,进入F:\Eth 目录下,创世块文件初始化:geth -datadir "%cd%\chain" init genesis.json

这里写图片描述

(3)打开geth控制台:geth -datadir "%cd%\chain" console

这里写图片描述

(4)创建新账户,密码为zqxgdufe:personal.newAccount('zqxgdufe') ,用来启动私有链的挖矿

这里写图片描述

(5) 输入exit,退出控制台

这里写图片描述

(6)启动私有链节点:geth -targetgaslimit 4294967295 -rpc -rpcaddr "172.25.240.22" -rpcport "8101" -port "30301" -rpcapi "eth,web3,personal" -networkid 2016 -identity 2016 -nodiscover -maxpeers 5 -datadir "%cd%\chain" -unlock 0 -rpccorsdomain "*" -mine console
注释:

 targetgaslimit –每个块的gas上限,这里可以暂时理解为容量 rpc –启动rpc通信,可以进行智能合约的部署和调试 rpcaddr –rpc接口的地址 rpcport –rpc接口的端口号 port –网络监听端口,用于节点之间通信 rpcapi –设置rpc的范围,暂时开启eth,web3,personal足够 networkid –设置当前区块链的网络ID,是一个数字,可以随便写 identity –区块链的标示,随便填写,用于标示目前网络的名字 nodiscover 禁止被网络中其它节点发现,需要手动添加该节点到网络 maxpeers 最大节点数量 datadir –设置当前区块链网络数据存放的位置 unlock –解锁某用户(此处用用户坐标来控制,解锁后的用户调用接口发起交易时,不要需要提供密码) rpccorsdomain 限制rpc访问源的ip,代表不限制 mine 允许挖矿 console –启动命令行模式,可以在Geth中执行命令*。172.25.240.22要改为自己的IP

这里写图片描述

输入密码:zqxgdufe
这里写图片描述

耐心等一会时间!!!自动显示挖矿,挖矿一会时间

这里写图片描述

(7)进入F:\Eth\win-unpacked ,运行Ethereum Wallet.exe ,若果出现版本更新窗口,不用理它,关掉就行

这里写图片描述

这里写图片描述

进入主页面

这里写图片描述

(8)暂时停止挖矿:miner.stop()不要在意输出的刷屏,只管输入完成后回车即可,如果输入正确,回车后会输出“true”。(其实这里建议启动一个CPU挖矿:miner.start(1) ,以后交易需要矿工确认,在这里挖了坑…)

这里写图片描述

(8)创建新账户,点击ADD ACCOUNT

这里写图片描述

输入密码:zqxgdufe,再次确认密码

这里写图片描述

这里写图片描述

这里写图片描述


发起交易

(1)刚才我们创建了一个新账号,但是新账号ACCOUNT2的钱包没有以太币

这里写图片描述

(2)点击ACCOUNT2,进入ACCOUNT2 的账户页面,复制ACCOUNT2 的地址,下面我们发起交易要用到这个地址。复制出现下面的弹出框,不用理它,点击COPY ANYWAY

这里写图片描述

这里写图片描述

(3)点击SEND,开始发起交易

这里写图片描述

(4)点击FROM下方输入栏,选择交易的发起人,我们选Main account ,因为当前只有他的账户下有以太币(钱包里有825.00ETHER)。TO下方的输入栏我们输入刚才复制的ACCOUNT2的地址。AMOUNT处输入本次要交易的以太币数量,以10个为例。输入10。其他的地方不用管,我们把滚动条拖到最下方,左下方有个SEND按钮,点击一下。

这里写图片描述

滑动到下方,点击SEND

这里写图片描述

输入账户密码(zqxgdufe),确认交易

这里写图片描述

回到主页面,滑动到下方,可以看到我们刚才的交易:

这里的交易还没得到确认,所以ACCOUNT2 的账户仍然为0,确认需要在挖矿中进行
这里写图片描述

(5)如果之前还没启动挖矿,要使用一个CPU启动挖矿:miner.start(1),如果觉得等得很久还没挖矿痕迹,启动所有CPU挖矿,即miner.start(), 消息确认后再关闭,重新启动一个CPU挖矿,即miner.start(1) ,不管怎样,我们从这一步以后一直启动挖矿,因为后面智能合约的调用需要得到矿工确认。

这里写图片描述

交易得到确认
这里写图片描述

查看ACCOUNT2 的账户
这里写图片描述


部署智能合约

(1)回到主页面,点击CONTRACTS

这里写图片描述

(2)点击DEPLOY NEW CONTRACT,部署合约

选择智能合约发起账户,这里选择Main account, 合约以太币数量填0

这里写图片描述

复制solidity语言编写的智能合约代码,选择需要部署的智能合约

这里写图片描述

智能合约代码:

contract MyToken{
    /*在合约中使用public关键字定义所有能被别的合约访问的变量*/
    string public name;
    string public symbol;
    uint8 public decimals;

    /*建立一个数组存储账户的余额*/
    mapping (address => uint256) public balanceOf;

    /*建立一个公共的事件用于用户通知*/
    event Transfer(address indexed from, address indexed to, uint256 value);

    /*初始化合约,当合约内的函数名和合约名相同时(MyToken),则该函数是合约的构造函数*/
    function MyToken(uint256 _supply, string _name, string _symbol, uint8 _decimals){
        /*默认将股份分为10000份,即股权的最小单位是0.01%*/
        if (_supply == 0) _supply = 1000000;

        /*可自定义股权数量和最小单位*/
        balanceOf[msg.sender] = _supply;

        /*定义股权名称*/
        name = _name;

        /*设定股权所使用的单位符号,例如%*/
        symbol = _symbol;

        /*设定小数位数*/
        decimals = _decimals;
    }

    /*创建股权转移函数*/
    function transfer(address _to, uint256 _value) {
        /*检验是否有足够的股权*/
        if (balanceOf[msg.sender] < _value) throw;
        if (balanceOf[_to] + _value < balanceOf[_to]) throw;

        /*更新股权转让信息*/
        balanceOf[msg.sender] -= _value;
        balanceOf[_to] += _value;

        /*通知用户股权转让成功*/
        Transfer(msg.sender, _to, _value);
    }
}

点击DEPLOY
这里写图片描述

输入账户密码确认,然后部署
这里写图片描述

当智能合约得到区块确认,说明智能合约被保存到区块中,部署智能合约成功
这里写图片描述


调用智能合约

(1)回到主页面,点击CONTRACTS

这里写图片描述

(2)点击进入智能合约

点击进入刚才部署的智能合约
这里写图片描述

智能合约页面的函数以及函数参数,以及执行
这里写图片描述

(3)输入密码确认,然后发送交易
这里写图片描述

(4)结果,Main account的股权占比变为90%,ACCOUNT2的股权占比变为10%
这里写图片描述

这里写图片描述


参考

区块链开发(二)部署并运行第一个以太坊智能合约
以太坊 链私有链环境搭建(windows)

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值