如何在泰嶽區塊鏈上--開發證書上鍊合約

寫合約分爲一下幾步:

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就可以開始測試。

 

整個過程非常方便。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章