外部所有账户(EOAs)和合约

我们在MetaMask钱包中创建的账户类型称为 Externally Owned Account(EOA) 。外部所有账户是那些拥有私人密钥的账户,它控制对资金或合约的访问。现在,你可能猜测还有另一种帐户,_合约_帐户。合约账户由以太坊区块链记录,由EVM执行的软件程序的逻辑所拥有(和控制)。

将来,所有以太坊钱包可能会作为以太坊合约运行,模糊了外部所有账户和合约账户之间的区别。但是永远保持的重要区别在于:人们通过EOA做出决定,而软件通过合约做出决定。

合约有一个地址,就像EOAs(钱包)一样。合约可以发送和接收ether,就像钱包一样。当交易目的地是合约地址时,它会导致该合约在EVM中_运行_,并将交易作为其输入。

除了ether之外,交易还可以包含_数据_,用于指示合约中要运行的特定方法以及传递给该方法的参数。通过这种方式,交易通过合约_调用_方法。最后,合约可以产生调用其他合约的交易,建立复杂的执行路径。其中一个典型的用法是合约A调用合约B,以便在合约A的用户之间保持共享状态。

在接下来的几节中,我们将编写我们的第一份合约。然后,我们将使用MetaMask钱包和测试ether在Ropsten测试网上创建,资助,使用该合约。