ContractNameService

https://github.com/zcom-cloud-blockchain/solidity/blob/master/contracts/ContractNameService.sol

概要

ContractNameService(以下CNS)は、コントラクト名で問い合わせると、対象のコントラクトのアドレスを返却するコントラクトです。

DNS(Domain Name System)と同じような役割をします。

CNSを本サービスで利用するには、Deployの他管理画面への登録が必要です。

管理画面登録の詳細については、基本設定 をご確認ください。

CNS Image

処理シーケンス

  • シーケンス図

    CNS-Seq

CNSに登録できるユーザのアドレスは、CNSをデプロイしたアドレス(サービスプロバイダのアドレス)だけに限定されているので、CNSに登録されたコントラクトは、サービスプロバイダがCNSに登録したことが分かります。

また、次のメソッドは、引数で渡されたアドレスが、コントラクト、またはコントラクトロジックとして登録されているかを確認するメソッドです。

後述のVersionLogicVersionFieldなどが、アクセス権限管理のために呼び出し元を限定するために使用します。

  • ContractNameService.isVersioncontract()

    function isVersionContract(address _sender, bytes32 _name) constant returns(bool) {
        if (Utils.isNull(_sender)) throw;
        for (uint i = 0; i < contracts[_name].length; i++) {
            if (contracts[_name][i].main == _sender) return true;
        }
        return false;
    }
    
  • ContractNameService.isVersionLogic()

    function isVersionLogic(address _sender, bytes32 _name) constant returns(bool) {
        if (Utils.isNull(_sender)) throw;
        for (uint i = 0; i < contracts[_name].length; i++) {
            if (contracts[_name][i].logic == _sender) return true;
        }
        return false;
    }
    

results matching ""

    No results matching ""