当前位置:   金科网 > 区块链 > 正文

使用Geth和Web3.js部署您的第一个私有以太坊智能合约

以太坊智能合约基本上是使用区块链中的以太坊虚拟机(EVM)运行的程序。创建以太坊地址时,会分配一个以太坊地址,并且每个交互使用一个事务。合约/应用程序将在区块链中具有状态,并且与之交互时状态将发生变化。重要的是,一旦合约被发送到区块链,它就永远不会改变(它是不可变的)。您可以通过更改再次上载同一个合约,但前一个合约将保持不变,并且它们将在彼此不知情的情况下并行运行。在智能合约进入主网之前,质量保证和测试至关重要。

 如何创建以太坊智能合约?

Solidity是以太坊智能合约的主要编译器之一。你可以像这样在Ubuntu中安装它。

apt-get install solc

在本教程中,我将使用Remix的示例合约之一(Owner.sol)。在较高级别上,此合约会将合约的所有者设置为部署它的人。有一个“ getter”可以检索当前所有者是谁,还有一个“ setter”可以允许当前所有者设置另一个所有者。非常简单,但可以达到目的。

pragma solidity >=0.4.22 <0.7.0;
contract Owner {
address private owner;

    event OwnerSet(address indexed oldOwner, address indexed newOwner);

    modifier isOwner() {
        require(msg.sender == owner, "Caller is not owner");
        _;
    }

    constructor() public {
        owner = msg.sender;
        emit OwnerSet(address(0), owner);
    }
function changeOwner(address newOwner) public isOwner {
        emit OwnerSet(owner, newOwner);
        owner = newOwner;
    }
function getOwner() external view returns (address) {
        return owner;
    }
}

快速Remix介绍

使用一些示例合约重新Remix加载。我们正在使用的一个在上面称为Owner.sol。我删除了本教程中包含的注释。我将解释如何与之互动。

我们将从文件浏览器开始在左侧菜单中进行操作。您只需在这里选择Owner.sol。

使用Geth和Web3.js部署您的第一个私有以太坊智能合约

然后,您想将一个菜单选项下移到Solidity Compiler。只需单击蓝色的Compile Owner.sol按钮。

使用Geth和Web3.js部署您的第一个私有以太坊智能合约

现在将鼠标移到Deploy&runtransactions菜单。只需单击橙色Deploy按钮。

使用Geth和Web3.js部署您的第一个私有以太坊智能合约

请注意,Remix提供了几个可使用的资金帐户。每个账户有100以太币资金。)我将使用从0x5B3开始的第一个帐户来部署合约。

使用Geth和Web3.js部署您的第一个私有以太坊智能合约

单击橙色Deploy后,您将看到部署在deployed Contracts下的合约。你也会注意到它有自己的以太坊地址。

使用Geth和Web3.js部署您的第一个私有以太坊智能合约

我展开了合约,您可以从那里看到合约中的两种方法。带输入字段的“ getter” getOwner和“ setter” changeOwner。我单击getOwner按钮并看到部署的地址:0x5B38Da6a701c568545dCfcB03FcB875f56beddC4

使用Geth和Web3.js部署您的第一个私有以太坊智能合约

我想改变合约的所有者。在顶部,我移动到第二个帐户,以便能够复制它,然后移回第一个帐户,即所有者。

使用Geth和Web3.js部署您的第一个私有以太坊智能合约

现在从0x5B3帐户运行changeOwner方法,将新帐户设置为0xAb8帐户。

使用Geth和Web3.js部署您的第一个私有以太坊智能合约

现在我再次运行getOwner方法,并正确地将所有者更改为0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2

使用Geth和Web3.js部署您的第一个私有以太坊智能合约