当前位置: 首页 > 工具软件 > Remix > 使用案例 >

关于Remix的使用

方茂
2023-12-01

介绍

Remix使用文档

Remix是一个开源的 用于 Solidity 智能合约开发的Web端IDE,提供基本的编译、部署至本地或测试网络、执行合约等功能。Solidity 是 Ethereum 官方设计和支持的程序语言,专门用于编写智能合约。

可以本地部署Remix,也可以直接使用官方部署好的,地址是:remix.ethereum.org。界面如下图:

创建代币合约

solidity官网上有一个最简单的创建代币合约Subcurrency Example

pragma solidity >0.4.24;

contract Coin {
    // The keyword "public" makes those variables
    // easily readable from outside.
    address public minter;
    mapping (address => uint) public balances;

    // Events allow light clients to react to
    // changes efficiently.
    event Sent(address from, address to, uint amount);

    // This is the constructor whose code is
    // run only when the contract is created.
    // 合约的构造函数,创建合约的时候合约创建者即为铸币人
    constructor() public {
        minter = msg.sender;
    }
    
    //铸币,只有合约创建人才能铸币
    function mint(address receiver, uint amount) public {
        require(msg.sender == minter);
        require(amount < 1e60);
        balances[receiver] += amount;
    }
     
    //发送代币
    function send(address receiver, uint amount) public {
        require(amount <= balances[msg.sender], "Insufficient balance.");
        balances[msg.sender] -= amount;
        balances[receiver] += amount;
        emit Sent(msg.sender, receiver, amount);
    }
}
复制代码

这是一个最简单的代币生成合约,主要就做了以下几件事:

  1. 创建合约:约定创建者即为铸币者
  2. 生成代币:合约创建者随时可以调用mint方法创建指定数量的代币
  3. 发送代币:只要自己拥有代币,就可以给指定地址发送代币

编译合约

  1. 创建.sol格式的合约文件
  2. 编写合约代码
  3. 开始编译
  4. 编译成功

编译合约生成的Details

合约编译成功之后,点击Details按钮,就能看到编译之后的一些信息,如下图所示(内容比较多,没有全部截图):

  1. NAME:合约名
  2. METADATA:一些编译相关的信息,比如版本、所用的语言、设置等
  3. BYTECODE:写入区块的字节码
  4. ABI:此智能合约对应的 ABI ,也就是我们合约里面定义的一些接口
  5. WEB3DEPLOY:智能合约编译之后的发布命令,这个就是比较重要的,之后的web3就是调用这段命令来部署合约的
  6. METADATAHASH:上面2元数据的一个哈希值
  7. SWARMLOCATION:Swarm网络的一个地址(到底什么是Swarm
  8. FUNCTIONHASHES:合约定义的方法的hash,其实我们执行合约的时候就是通过这个hash去找到对应的方法进行执行的
  9. GASESTIMATES:关于矿工费的一个预算,在ETH上进行合约的部署,执行等都是需要矿工费的。一般合约代码越多矿工费越高。

本地部署合约

  1. 点击右上角的Run
  2. 选中部署的环境为本地(也就是合约不会部署到公共的区块链网络,只是部署到一个本地的测试区块链网络)
  3. 选中部署的账户(本地环境默认会创建好几个账户,每个账户默认有100个eth)
  4. 选择要部署的合约
  5. 点击Deploy之后就会部署到本地了
  6. 部署完成之后的合约地址

或者在At Address填写已经部署好的合约地址,6中就会出现对应地址的合约。

测试网络部署合约

首先要安装MetaMask插件,到Chrome商店去下载。这是一个Chrome上的以太坊钱包插件。具体的使用在这里不做说明。

我这里使用的测试网络是Rinkeby,在Rinkeby上账户的eth代币需要到www.rinkeby.io/#faucet获取。

我们在测试网络上环境选择Injected Web3Remix会自动连结 MetaMask。我们能看到账号也变成了我们MetaMask上面的账号。

最后点击Deploy部署,MetaMask会弹出界面让你进行一个确认,因为部署合约是需要一个矿工费的,这里主要就是确认矿工费,确认之后就会发起广播,矿工收取矿工费,合约部署到区块上。

调用合约

合约部署完成之后,下面就会出现我们部署好的合约,或者我们直接在At Address里填入之前已经部署过的合约地址也可以。

展开合约,我们就能看到之前合约代码里我们定义的一些方法和变量。这里mintsend执行时是需要支付矿工费的。

  1. mint生成代币:填入账户地址(需要是合约创建者的地址)和生成代币的数量,点击transact执行合约代码。
  2. send发送代币:展开之后一样填入接受者的账户地址和接收数量
  3. 查看对应地址里的代币余额
  4. 查看铸币者(即合约创建者)

终端输出器

查看交易详情

在合约部署、执行的过程中终端输出器会输出相应的内容信息。如下图,是一个合约部署的输出内容(标有转账的哈希,合约创建者,gas费用,输入内容等):

Debug调试

调试需要在本地环境进行调试,即合约部署时选择JavaScript VM,然后在我们上图所示的终端输出中点击对应交易右边的Debug按钮,即可显示如下图所示的调试界面:

PS:按道理这里不是本地环境也可以,直接输入Block numberTxHash即可查看调用栈,但是我输入之后发现是empty,不知道什么原因。

 类似资料: