构建智能合约

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】
链客,有问必答!!

使用命令行构建智能合约
此页面将帮助您在以太坊命令行上构建Hello,World合约。如果您不知道如何使用命令行,我们建议您跳过本教程,而是使用图形用户界面构建自定义标记。
智能合约是以太坊区块链上的账户持有对象。它们包含代码功能,可以与其他合同进行交互,制定决策,存储数据并将乙醚发送给他人。合同是由他们的创造者定义的,但是他们的执行,以及他们提供的服务,都是由以太网本身提供的。只要整个网络存在,它们就会存在并且可执行,并且只有在程序被自毁时才会消失。
你能用合同做什么?那么,你几乎可以做任何事情,但是对于我们的入门指南,我们来做一些简单的事情:首先你会创建一个经典的“Hello World”合约,然后你可以建立自己的加密标记发送给任何你喜欢的人。一旦你掌握了这一点,那么你将通过众筹筹集资金,如果成功的话,将提供一个完全透明和民主的组织,只会服从自己的公民,永远不会摆脱它的宪法,不能被审查或关闭。而所有这些都在不到300行的代码中。
在你开始之前:
安装以太坊CLI
详细了解合约
进入geth控制台之前,请确认GUI已关闭。运行geth以开始同步过程(第一次运行可能需要一段时间)。
那我们现在就开始吧。
你的第一个公民:欢迎你
现在你已经掌握了以太坊的基本知识,让我们进入你的第一个严肃的合同。前沿是一个很大的开放领土,有时候你可能会感到孤独,所以我们的第一步就是创造一个自动伴侣,在你感到孤独时迎接你。我们会称他为“温和”。
Greeter是一个智能数字化实体,它存在于区块链中,并能够根据其输入与任何与之交互的人进行对话。它可能不是一个讲话者,但它是一个很好的倾听者。这是它的代码:
contract Mortal { /* Define variable owner of the type address / address owner; / This function is executed at initialization and sets the owner of the contract / function Mortal() { owner = msg.sender; } / Function to recover the funds on the contract / function kill() { if (msg.sender == owner) selfdestruct(owner); } } contract Greeter is Mortal { / Define variable greeting of the type string / string greeting; / This runs when the contract is executed / function Greeter(string _greeting) public { greeting = _greeting; } / Main function */ function greet() constant returns (string) { return greeting; } }
你会注意到这个代码中有两个不同的合约:“凡人”和“迎宾”。这是因为Solidity(我们使用的高级合同语言)具有继承性,这意味着一个合约可以继承另一个合约的特征。这对简化编码非常有用,因为合约的通用特征不需要每次重写,并且所有合约都可以用更小,更易读的块编写。所以通过只声明迎宾者是致命的,你就继承了来自“凡人”合约的所有特征,并使迎宾代码简单易读。
继承特征的“凡人”仅仅意味着迎宾合同可以被其所有者杀死,以清理区块链并在不再需要合同时收回锁定在其中的资金。以太坊中的契约默认为不朽,并且没有所有者,这意味着一旦部署,作者就没有特殊的特权了。部署前请考虑这一点。
使用Solc编译器编译您的合同
在您能够部署您的合同之前,您需要两件事情:
编译后的代码
应用程序二进制接口,它是一个定义如何与合约进行交互的JavaScript对象
你可以通过使用Solidity编译器来获得这两者。如果你还没有安装编译器,你可以:
按照安装Solidity Compiler的说明在机器上安装编译器
使用Remix,一个基于网络的Solidity IDE
SOLC在您的机器上

如果您在机器上安装了编译器,则需要编译合约以获取编译的代码和应用程​​序二进制接口。
solc -o target --bin --abi Greeter.sol
这将创建两个文件,一个文件包含已编译的代码,另一个文件在名为target的目录中创建应用程序二进制接口。
$tree . ├── Greeter.sol └── target ├── Greeter.abi ├── Greeter.bin ├── Mortal.abi └── Mortal.bin
你会看到有为两个合同创建的文件; 但是由于Greeter包括Mortal,你不需要部署Mortal来部署Greeter。
您可以使用这两个文件来创建和部署合同。
var greeterFactory = eth.contract(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值