ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

用Remix网页进行例子测试

2020-03-12 10:02:09  阅读:1293  来源: 互联网

标签:Index Remix 网页 sol uint VaccineInfo 测试 vaccineInfo


例子来源:《基于区块链的疫苗溯源系统开发》https://github.com/adguh/Vaccine

一、用Remix在线测试

remix网址:http://remix.ethereum.org/(部分网络不能正常访问,我用电脑连接手机移动4G的热点)

1. 打开remix网址,点github,粘贴输入网址

输入4个sol文件网址,导入4个.sol文件:

  • Vaccine.sol

  • Migrations.sol

  • MetaCoin.sol

  • ConvertLib.sol

2. 测试Vaccine.sol合约

pragma solidity ^0.5.0;

contract Vaccine{
    
    uint public Index;
    //address add1;
    mapping(address => mapping(uint => VaccineInfo)) store;//查找表
    mapping(uint => address) VaccineIdInstore;//反查表
    
    //疫苗基本信息
    struct VaccineInfo{
        uint Id;
        //address producer;//生产商
        uint traceNum;//追溯码
        string vaccineName;
        uint produceData;//生产日期
        uint endData;//失效日期
    }
     //VaccineInfo[] memory basicInfo;
     constructor() public{
         Index = 0;
     }
     //写入数据
     function addInfo(uint _traceNum, string memory _vaccineName, uint _produceData, 
     uint _endData)public returns(uint) {
         Index +=1;
         VaccineInfo memory vaccineInfo = VaccineInfo(Index, _traceNum, _vaccineName, _produceData
         , _endData);
         store[msg.sender][Index] = vaccineInfo;
         VaccineIdInstore[Index] = msg.sender;
        // return Index;
     }
     //提取数据
     function getInfo(uint _Index) view public returns(uint, uint, string memory, uint, uint){
         VaccineInfo memory vaccineInfo = store[VaccineIdInstore[_Index]][_Index];
         return(vaccineInfo.Id, vaccineInfo.traceNum, vaccineInfo.vaccineName, 
         vaccineInfo.produceData, vaccineInfo.endData);
     }

    
    
}

2.1 打开Vaccine.sol,网页自动选择相应版本,点击compile编译

2.2 部署合约,选择账号,设置gas limit,点击Deploy,

2.3 测试2个函数和1个状态变量

2.3.1 点击index,显示0

2.3.2 addinfo后输入

30001,“疫苗名称”,20110223,20150223

显示成功

2.3.3 getinfo后输入 1

得到刚才输入的信息

2.3.4 index

成功注册1个

2.4 同上注册4个疫苗产品

3. 测试migration.sol合约

pragma solidity >=0.4.21 <0.6.0;

contract Migrations {
    address public owner;
    uint public last_completed_migration;

    constructor() public {
        owner = msg.sender;
    }

    modifier restricted() {
        if (msg.sender == owner) _;
    }

    function setCompleted(uint completed) public restricted {
        last_completed_migration = completed;
    }

    function upgrade(address new_address) public restricted {
        Migrations upgraded = Migrations(new_address);
        upgraded.setCompleted(last_completed_migration);
    }
}

编译后部署完成,开始测试

3.1 先用地址1测试

一切正常

3.2 不update地址的情况下更换为地址2测试

变量不会更改,因为

 modifier restricted() {
        if (msg.sender == owner) _;
    }

限制了操作

4. 测试convertlib.sol合约

pragma solidity >=0.4.21 <0.6.0;

library ConvertLib {
    function convert(uint amount,uint conversionRate) public pure returns (uint convertedAmount) {
        return amount * conversionRate;
    }
}

区块链Solidity中library的使用和部署:https://www.jianshu.com/p/2a49b4e2ee58

 

标签:Index,Remix,网页,sol,uint,VaccineInfo,测试,vaccineInfo
来源: https://blog.csdn.net/Tonyzhang1371/article/details/104780507

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有