合约是什么,以及作用

本文介绍了以太坊智能合约的概念,包括其在区块链中的地位、以太坊虚拟机(EVM)的作用以及Solidity、Serpent和LLL等高级语言的使用。还展示了如何编写和编译合约,以及与合约交互的方法。
摘要由CSDN通过智能技术生成

如果想知道更多区块链技术知识,请百度【链客区块链技术问答社区】进入

什么是合约?
合约是代码和数据的集合,存在于以太坊区块链的特定地址。 合约账户能够在彼此之间传递信息,进行图灵完备的运算。合约依靠被称作以太坊虚拟机 字节代码上的区块链运行。

以太坊高级语言
合约依靠被称作以太坊虚拟机(EVM) 字节代码(以太坊特有的二进制格式)上的区块链运行。然而,合约是很典型地用诸如Solidity等高级语言写成的,它会用以太坊虚拟机编译器编译成字节代码上传到区块链。

下面是开发者可以用来为以太坊写智能合约的高级语言。

Solidity
Solidity是和JavaScript相似的语言,你可以用它来开发合约并编译成以太坊虚拟机字节代码。它目前是以太坊最受欢迎的语言。

Serpent
Serpent是和Python类似的语言,可以用于开发合约编译成以太坊虚拟机字节代码。它力求简洁, 将低级语言在效率方面的优点和编程风格的操作简易相结合,同时合约编程增加了独特的领域特定功能。Serpent用LLL编译。

LLL
Lisp Like Language (LLL)是和Assembly类似的低级语言。它追求极简;本质上只是直接对以太坊虚拟机的一点包装。

写合约
没有Hello World程序,语言就不完整。Solidity在以太坊环境内操作,没有明显的“输出”字符串的方式。我们能做的最接近的事就是用日志记录事件来把字符串放进区块链,示例如下:

contract HelloWorld {

event Print(string out);function() { Print(“Hello, World!”); }

}

每次执行时,这个合约都会在区块链创建一个日志入口,印着“Hello,World!”参数。
另请参阅:Solidity docs里有更多写Solidity代码的示例和指导。

编译合约
solidity合约的编译可以通过很多机制完成。

注意:关于solc和编译Solidity合约代码的更多信息可在此查看。

  1. 在geth设置solidity编译器

如果你启动了geth节点,就可以查看哪个编译器可用。示例如下:

> web3.eth.getCompilers();

[“lll”, “solidity”, “serpent”]

这一指令会返回到显示当前哪个编译器可用的字符串。
注意:solc编译器和cpp- ethereum一起安装。如果你的solc可执行文件不在标准位置,可以用—solc标志为solc可执行文件指定一个定制路线。示例如下:

$ geth --solc /usr/local/bin/solc

或者你可以通过控制台在执行期间设置这个选项:

> admin.setSolc("/usr/local/bin/solc")

solc, the solidity compiler commandline inter

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值