📜  以太坊-部署合同(1)

📅  最后修改于: 2023-12-03 15:22:04.122000             🧑  作者: Mango

以太坊-部署合同

以太坊是目前最流行的区块链平台之一,所以了解如何在以太坊上部署智能合约是任何区块链开发者的必修课程之一。本文将介绍如何使用 Truffle 框架部署一个简单的智能合约。

安装 Truffle

Truffle 是一个基于以太坊的开发框架,使用 Truffle 可以轻松地进行智能合约开发和部署。要安装 Truffle,只需运行以下命令:

npm install -g truffle
创建项目

创建一个新目录并进入其中:

mkdir my-dapp && cd my-dapp

通过 Truffle 初始化项目:

truffle init

这将在当前目录中创建一个 Truffle 项目的骨架。可以看到在项目根目录下生成了一系列文件和文件夹,其中最重要的是 contracts/migrations/truffle-config.js

编写智能合约

contracts/ 目录下创建一个新的文件 MyContract.sol,并编写以下代码:

pragma solidity ^0.5.0;

contract MyContract {
  uint public myVariable;

  function setMyVariable(uint _myVariable) public {
    myVariable = _myVariable;
  }
}

这是一个最简单的合约,它声明了一个名为 myVariable 的公有变量,并声明了一个名为 setMyVariable 的公有函数来设置该变量的值。

配置部署网络

truffle-config.js 文件中,配置部署智能合约的网络。可以添加多个网络,这里以 Rinkeby 测试网络为例:

const HDWalletProvider = require('truffle-hdwallet-provider');
const infuraKey = "<INFURA_PROJECT_ID>";
const mnemonic = "<YOUR_METAMASK_MNEMONIC>";
module.exports = {
  networks: {
    rinkeby: {
      provider: () => new HDWalletProvider(mnemonic, `https://rinkeby.infura.io/v3/${infuraKey}`),
      network_id: 4,
      gas: 3000000,
      gasPrice: 10000000000
    }
  }
};

需要将 infuraKeymnemonic 替换为自己的 Infura 项目 ID 和 MetaMask 助记词。

编写部署脚本

migrations/ 目录下创建一个新的 JavaScript 文件 2_deploy_contracts.js,并编写以下代码:

const MyContract = artifacts.require("MyContract");

module.exports = function(deployer) {
  deployer.deploy(MyContract);
};

这是一个简单的部署脚本,它只是导入 MyContract 合约并通过 deployer.deploy(MyContract) 部署到指定的网络中。

部署智能合约

最后一步是运行 Truffle 的部署命令来部署智能合约。在终端中,运行以下命令:

truffle migrate --network rinkeby

这将自动连接 Rinkeby 测试网络,并在测试网络上部署智能合约。如果一切正常,可以在终端中看到智能合约的地址。

2_deploy_contracts.js
=====================

   Replacing 'MyContract'
   -----------------------
   > transaction hash:    0x6c68fb6072a95d9cf574d094b21b60b9c9adc3d0c7db506c4836cbbabed14f48
   > Blocks: 0            Seconds: 13
   > contract address:    0x10fAaefB8AESSFaDdB9d163Be8cD0c232f10d2C3
   > account:             0x3E2e7fBf973F9F451d0f7A647Cd70A09F7EB2E23
   > balance:             4.1978853044
   > gas used:            195304
   > gas price:           10 gwei
   > value sent:          0 ETH
   > total cost:          0.00195304 ETH

   > Saving artifacts
   -------------------------------------
   > Total cost:          0.00195304 ETH


Summary
=======
> Total deployments:   1
> Final cost:          0.00195304 ETH

恭喜!您已成功在 Rinkeby 测试网络上部署了您的第一个智能合约。

总结

通过 Truffle,可以轻松地创建、编译和部署以太坊智能合约。本文介绍了如何使用 Truffle 在 Rinkeby 测试网络上部署一个简单的智能合约。