智能合约可用于将与区块链中相关许可证相关的监管要求嵌入其中。许可证将以电子方式提供,以令牌的形式。例如,这可以通过 QR 码实际表示,显示当前的许可证信息。许可证的数字表示形式将存储在数字钱包中,通常是智能手机或平板电脑上的应用程序。拟议的标准允许颁发机构或监管机构不时修改、撤销或拒绝许可证,其决定的结果几乎实时地反映在许可证令牌中。因此,许可证持有人将几乎立即收到有关其许可证的任何修改、撤销或问题的通知。
接口
Solidity 示例
interfaceEIP1753{functiongrantAuthority(addresswho)external;functionrevokeAuthority(addresswho)external;functionhasAuthority(addresswho)externalviewreturns(bool);functionissue(addresswho,uint256from,uint256to)external;functionrevoke(addresswho)external;functionhasValid(addresswho)externalviewreturns(bool);functionpurchase(uint256validFrom,uint256validTo)externalpayable;}pragmasolidity^0.5.3;contractEIPisEIP1753{stringpublicname="Kakadu National Park Camping Permit";// 卡卡杜国家公园露营许可证
uint256publictotalSupply;addressprivate_owner;mapping(address=>bool)private_authorities;mapping(address=>Permit)private_holders;structPermit{addressissuer;uint256validFrom;uint256validTo;}constructor()public{_owner=msg.sender;}functiongrantAuthority(addresswho)publiconlyOwner(){_authorities[who]=true;}functionrevokeAuthority(addresswho)publiconlyOwner(){delete_authorities[who];}functionhasAuthority(addresswho)publicviewreturns(bool){return_authorities[who]==true;}functionissue(addresswho,uint256start,uint256end)publiconlyAuthority(){_holders[who]=Permit(_owner,start,end);totalSupply+=1;}functionrevoke(addresswho)publiconlyAuthority(){delete_holders[who];}functionhasValid(addresswho)externalviewreturns(bool){return_holders[who].validFrom>now&&_holders[who].validTo<now;}functionpurchase(uint256validFrom,uint256validTo)externalpayable{require(msg.value==1ether,"Incorrect fee");// 不正确的费用
issue(msg.sender,validFrom,validTo);}modifieronlyOwner(){require(msg.sender==_owner,"Only owner can perform this function");// 只有所有者才可以执行此功能
_;}modifieronlyAuthority(){require(hasAuthority(msg.sender),"Only an authority can perform this function");// 只有授权人才能执行此功能
_;}}