不想说话,自闭中..

以太坊学习2—转账与智能合约

前言

上一篇文章已经为我们搭建好了开发环境,接着上面讲,本篇文章将简单的记录如何创建用户、转账、编写第一个智能合约并部署它等操作。

开发者启动及创建账户

由于账户的余额为0时,是不能够部署智能合约的。这时,我们选择dev开发者模式进行开发。

  • 开发者模式启动以太坊
1
./geth --dev --datadir testNet console 2>> info.log

这里写图片描述

在这条命令中,dev表示的是以开发者模式启动,这时用户列表中会有一个默认的用户accounts[0](这家伙有很多很多的钱..);datadir 表示的是存放区块数据和用户密钥的目录testNet;console表示启动控制台并将日志打印到info.log中。

这里写图片描述

  • 创建用户
    现在我们需要创建第二个用户,来产生转账交易。
1
personal.newAccount('1234')//密码为1234
  • 查看用户余额
1
eth.getBalance(eth.accounts[1])

这里写图片描述

转账

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

注:ether是以太币的意思,1ether = 1,000,000,000,000,000,000wei.

这时你会发现第二个账户的余额多了1以太币。
这里写图片描述

解锁钱包文件

解锁钱包文件,是部署智能合约的前提。这就类似于你转账之前需要输入银行卡密码一样。

1
personal.unlockAccount(eth.accounts[1],"1234")//1234为这个账户的密码

这里写图片描述
完毕,之后我们可以编写智能合约啦。

编写智能合约

智能合约的编写,以太坊官方推荐的语言是Solidity语言。别觉得它陌生,可当你看到它的模样时,你一定觉得它很面熟。充满了Java和JavaScript的感觉~

编写Solidity的IDE的话,目前市场上也不多,我自己觉得不错的IDE是官方的browser-solidity和国内的JIDE

HelloWorld.sol

1
2
3
4
5
6
7
8
pragma solidity ^0.4.0;

contract HelloWorld
{
function sayHi() constant returns (string) {
return "HelloWorld2333..";
}
}

第一行表明目前使用的solidity版本,不同版本的solidity可能会编译出不同的bytecode。^代表兼容solidity 0.4.4~0.4.9的版本。
contract关键字类似于其他语言中较常见的class。
constant声明,表示调用这个方法并不会改变区块链的状态。

按照下图的顺序,复制生成的Web3Deploy.

这里写图片描述

部署智能合约

将复制的代码稍作修改:from: web3.eth.accounts[1], 然后粘贴到geth命令行,执行。
这里写图片描述
出现下图表示合约部署成功。
这里写图片描述
执行合约中sayHi()方法,返回HelloWorld.并查看第二个用户的账户余额。
这里写图片描述
余额变少了,说明发布合约会消耗一定的gas值。