Remix的使用

最近在用remix写智能合约,碰到了一些不会操作的地方,先记录整理部署方式,后期再慢慢丰富内容;

环境

目录

一、界面介绍与基础功能的使用

待补充

二、编译合约

待补充

三、部署方式

参考文献:

https://blog.csdn.net/weixin_33806509/article/details/91387634?utm_term=remix%E8%AE%BE%E7%BD%AEweb3%E7%89%88%E6%9C%AC&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-1-91387634&spm=3001.4430

1. 本地部署 --JavaScript VM

Deploy(部署) 区域将 ENVIROMENT 设定为JavaScript VM,此时Account区域会提供10个账户地址,每个账户由100个eth测试币,合约只会部署到一个本地测试的区块链网络
在这里插入图片描述

2. 测试网部署 --injected Web3

在remix上想要将合约部署到测试网,需要先安装一个Chrome上的以太坊钱包插件

Metamask,插件安装步骤:
待补充

之后在Deploy(部署)区域将ENVIROMENT设定为injected Web3,我这里使用的测试网络是Kovan网,之后的部署和测试步骤和本地部署步骤一样:
在这里插入图片描述

注意:在测试网上部署合约一定要保证账户内有测试币,获取Kovan网的测试币地址为:https://gitter.im/kovan-testnet/faucet#,需要注册一个账户,之后在对话框里发送自己metamask账户到群聊上后会有机器人@你并提示“sended!”字样。

实战

这是一个代币生成合约,有以下三个功能:

  1. 创建合约:约定创建者即为铸币者
  2. 生成代币:调用mint方法创建指定数量的代币
  3. 发送代币:给指定地址发送代币
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. 部署
  3. 测试

四、Remix上使用Web3.js库实现合约交互

  1. 安装LearnEth插件
    在这里插入图片描述

  2. 进入LearnEth模块中选择Basic use of web3.js模块,这时候会有两个指导教程并分别带写有web3库方法的js脚本文件供测试:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    至此就可以实现合约调用和Web3库的使用,这里需要记住的是:

  • 在remix中运行js脚本的命令是:remix.execute(),此命令将执行当前JavaScript文件。而脚本文件存放的位置在这里:

在这里插入图片描述

  • web3库的调用内容放在async…里面,不需要再使用const Web3 = require('web3')语句导入web3.js
    (async () => {
    
    
        try {
    
    
            //web3.js内容
})
        
        } catch (e) {
    
    
            console.log(e.message)
        }  

    })()

猜你喜欢

转载自blog.csdn.net/weixin_46353030/article/details/121439887