如何在泰岳区块链上--开发证书上链合约

写合约分为一下几步:

1、需求分析:

     把证书上链,证书的关键信息是:姓名、身份ID, 地址、签发时间、证书号,证书ID。

    证书操作的几个步骤:1、创建,2、查询

2、代码编写:

根据需求,

    a 、需要定义结构体:如下:Cert,里面就包含了所有字段。

    b、定义存储变量:mapp 类型的certList,主要是通过证书唯一ID索引到证书详细信息。

    c、书写创建函数:createElectronicCert,再有就是查询。checkCert

 

pragma solidity ^0.5.7;
// SPDX-License-Identifier: MIT

contract ElectronicCert{
    address public owner;
    address public manager;
    constructor() public{
        owner = msg.sender;
    }
    

    
    struct Cert{
        address d_owner;
        string d_name; // name  
        string d_ProvinceID; //Province ID
        string d_certId;
        uint256 d_certType;
        uint256 d_createTime;
    }
    
    mapping(string => Cert) public certList; //certID -> Deposit
    mapping(string => address) public certID;
    
    function createElectronicCert(
        address ply_, 
        string memory name_,
        string memory prID_,
        string memory certID_,
        uint256 Type_
        ) public { 
        require(msg.sender == manager,"not manager") ;
        require(certID[certID_]==address(0),"");
        
        Cert memory plyCert = Cert(ply_,name_,prID_,certID_,Type_,now);
        
        certID[certID_] = ply_;
        certList[certID_] = plyCert;
        
    }
    
    function getCertInfo(string memory cID_) view public returns(
        address ply_,
        string memory name_,
        string memory prID_,
        string memory certID_,
        uint256 Type_,
        uint256 cTime_
        ){
            ply_ = certList[cID_].d_owner;
            name_ = certList[cID_].d_name;
            prID_ = certList[cID_].d_ProvinceID;
            certID_ = certList[cID_].d_certId;
            Type_ = certList[cID_].d_certType;
            cTime_ = certList[cID_].d_createTime;
    }
    
    function checkCert(string memory prID_,string memory certID_) view public returns(bool){
        return keccak256(abi.encodePacked(certList[certID_].d_ProvinceID)) == keccak256(abi.encodePacked(prID_)); 
    }
    
    function setManager(address _mAddr) public{
        require(msg.sender == owner,"");
        require(_mAddr != address(0),"");
        manager = _mAddr ;
    }
    
    
}

 

3、代码发布

           代码上链:选择https://publicstellar.taiyuechain.com/#/

          需要申请测试币:可以去官网申请。

          如何在泰岳区块链上--开发证书上链合约

合约部署:

如何在泰岳区块链上--开发证书上链合约

部署结束:合约地址在日志中查看:

0x4cA31e16E04Df2333Cd4152869fD39F0c78A2143

4、测试:

可以进入合约调用进行测试:

如何在泰岳区块链上--开发证书上链合约

需要填写合约地址,和Json就可以开始测试。

 

整个过程非常方便。