区块链与数字货币

智能合约 hello world

2018-05-05  本文已影响0人  廖全磊LesterLiao

这是智能合约的入门教程,从hello world开始智能合约之旅。

一、安装ubuntu系统

1、从官网下载ubuntu server 镜像【下载地址】

2、安装virtualbox

3、安装ubuntu虚拟机(注意,安装时,第一个语言选项必须选择English,不然会安装失败)

二、安装geth工具

sudo apt-get install software-properties-common

sudo add-apt-repository -y ppa:ethereum/ethereum

sudo apt-get update

sudo apt-get install ethereum

三、创建以太坊私人节点

1、创建配置文件

配置文件中chainId为该网络的标识符(正式网络为1),可以随机填写

difficulty为难度值,如果需要快速挖矿,建议降低难度值

2、初始化

geth --datadir eth-data init genesis.json

3、启动节点

geth --datadir ./eth-data --networkid 110 --rpc --rpcapi "db, eth, net, web3,debug, admin, personal, miner" --rpcaddr "172.168.10.5" --rpccorsdomain "*"

此处networkid应该和配置文件中的chainId一致,rpcaddr与本机ip保持一致

4、创建用户

personal.newAccount()创建用户,通过eth.accounts查看用户

5、挖矿

通过 geth attach 172.168.10.5:8545    ,连接节点,然后miner.start() 开始挖矿,miner.stop()停止挖矿。挖矿产生的以太币会默认存储到创建的第一个用户地址上,可以通过eth.getBalance(eth.coinbase) 查看余额。

四、编译发布helloworld智能合约

1、编写智能合约

pragma solidity ^0.4.0;

contract HelloWorld {

    function helloWorld() public returns (string){

      return "hello world !";

  }

}

2、编译

remix 在线编译工具  中创建文件,写入上述智能合约代码。  点击start to compile 。编译完成后点击Details,获取ABI(后面调用时需要)

ABI:[{"constant":false,"inputs":[],"name":"helloWorld","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

3、发布

点击run按钮选择环境(Environment)为 Web3 provider ,填入我们启动的节点地址172.168.10.5:8545(ip根据实际情况填写)。

连接后,选择账户为eth.coinbase(理论上为我们创建的账户),选择合约HelloWorld。点击create 进行创建。

创建过程中会显示creation of HelloWorld pending...

此时,需要进行上述挖矿程序。挖矿产生了新区块。则合约创建成功。会展示出合约地址,如下所示(红色方框中为合约地址)。

五、运行

1、连接节点

 geth attach 172.168.10.5:8545。

2、调用合约方法

>  abi =[{"constant":false,"inputs":[],"name":"helloWorld","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

> hello=eth.contract(abi).at(‘0x7a9c2864d28062db8f7305c15cce5237dde15add’);

> hello.helloWorld.call();

> hello world !

注意:0x7a9c2864d28062db8f7305c15cce5237dde15add 为合约地址

如上所示,通过对helloWorld方法的调用,成功输出了  “hello world !”。

恭喜你,迈出了智能合约的第一步!

上一篇下一篇

猜你喜欢

热点阅读