主页 > imtoken地址是什么 > 以太坊教程 - 智能合约

以太坊教程 - 智能合约

imtoken地址是什么 2023-10-11 05:13:31

与比特币相比,以太坊的一大创新是它支持智能合约。

所谓智能合约就是运行在区块链上的程序。 与普通程序不同的是,智能合约必须保证在区块链网络的各个节点中运行的结果完全相同,以便任何节点都可以验证在挖矿输出节点产生的区块中,智能合约的执行。结果是对的。

因此,以太坊提供了一个EVM(Ethereum Virtual Machine)虚拟机来执行智能合约的字节码,并且与普通程序相比,为了消除程序运行的不确定性,智能合约有很多限制,例如,不支持浮动-点运算(因为浮点数有不同的表示方式,不同架构的CPU浮点计算精度不同),不支持随机数,不支持从外部读取输入等。

类似于Java源代码被编译成JVM可执行字节码,我们也需要一种高级语言来编写智能合约,然后编译成EVM字节码。 开发智能合约最常用的语言是以太坊专门定制的Solidity语言。 后面我们会详细介绍Solidity的用法。

智能合约编译后就是一段EVM字节码。 当部署在以太坊区块链上时,会根据部署者的地址和地址的随机数分配一个合约地址。 合约地址和账户地址的格式没有区别合约以太坊,但是合约地址没有私钥,所以没有人可以直接操作该地址的合约数据。 要调用合约,唯一的方法就是调用合约的公共函数。

这也是合约的一个限制:合约不能主动执行,只能被外部账户调用。 如果一个合约要周期性地执行,它只能被离线服务器周期性地调用。

此外,合约充当一个地址,可以接收以太币和发送以太币。 数据也可以存储在合约中。 合约的数据存储在与合约地址关联的存储上,这使得合约具有状态,可以实现更复杂的逻辑,包括存款、取款等。

在合约执行过程中,只要知道其他合约的地址和函数签名,就可以调用其他已部署的合约,极大地扩展了合约的功能。 例如,一个合约可以调用另一个借贷合约的借贷方法,然后调用交易合约,最后调用还款方法,实现所谓的“闪贷”(即实现借贷-交易-还款)一个合约调用)函数。 多个合约的嵌套调用也大大增加了因代码编写漏洞被黑客攻击的可能性。 为了避免错误合约以太坊,在编写合约时需要更加小心。

概括

以太坊通过EVM虚拟机执行智能合约代码;

合约部署后,会自动获取一个地址,可以像外部账户一样访问以太币,也可以存储状态数据;

合约只能被外部账户被动调用,但在执行过程中可以调用其他合约的公共函数。

访问以获取更多区块链教程