VersionContract

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

概要

作成したコントラクトの外部からの呼び出しに対するインタフェースに相当するコントラクトの親クラス。

VersionContractイメージ

インタフェース部分へのコントラクトの呼出時にお金が渡される可能性があるので、VersionContract にはその問題を吸収する関数などが実装されています。

サブコントラクト実装方針

  • インタフェース実装

    VersionContractのサブクラスは、コントラクトのバージョンがあがっていくと継承によりサイズが肥大化していきます。( 継承によるロジック肥大化の問題

    インタフェースとしての役割だけにとどめて、呼び出されたら極力ロジックを書かずにVersionLogicに処理を受け渡します。

  • msg.senderの差し替え

    Ethereumの特性上、VersionLogicを呼び出し直すと、VersionLogic側の msg.sender は、VersionContractの実装コントラクト(Someone_v1など)になってしまいます。

    そのため、VersionLogicを呼ぶ際は、本来のmsg.senderを引数として追加して呼びなおす実装にします。

参考となる実装クラス

results matching ""

    No results matching ""