ENS in AragonOS

@aragonのnode modulesの中身をみてみました

AragonOSを別途起動したGanacheで走らせるために、ENS関連の作業を行おうとしていました。そのために@aragonのnode_modulesの中身を見てみたら、割とガッツリ実装されていることを知りました。

AragonOSのチュートリアルを試した際の、プロジェクトフォルダ内のnode_moduleを覗くと、node_modules/@aragon/os/contracts/lib/ens配下に、

  • AbstracgtENS.sol
  • ENS.sol
  • PublicResolver.sol
    というSolitidyのソースファイルがありました。

AbstractENS.solというファイルでは、

// See https://github.com/ensdomains/ens/blob/7e377df83f/contracts/AbstractENS.sol

pragma solidity ^0.4.15;

interface AbstractENS {
    function owner(bytes32 _node) public constant returns (address);
    function resolver(bytes32 _node) public constant returns (address);
    function ttl(bytes32 _node) public constant returns (uint64);
    function setOwner(bytes32 _node, address _owner) public;
    function setSubnodeOwner(bytes32 _node, bytes32 label, address _owner) public;
    function setResolver(bytes32 _node, address _resolver) public;
    function setTTL(bytes32 _node, uint64 _ttl) public;

    // Logged when the owner of a node assigns a new owner to a subnode.
    event NewOwner(bytes32 indexed _node, bytes32 indexed _label, address _owner);

    // Logged when the owner of a node transfers ownership to a new account.
    event Transfer(bytes32 indexed _node, address _owner);

    // Logged when the resolver for a node changes.
    event NewResolver(bytes32 indexed _node, address _resolver);

    // Logged when the TTL of a node changes
    event NewTTL(bytes32 indexed _node, uint64 _ttl);
}

とインタフェース定義をしています。ENS.solではcontract ENS is AbstractENSとENSの働きをするスマートコントラクトが定義されています。

このクラスの中に、構造体が定義されていて、Resolverを設定できるようです。

    struct Record {
        address owner;
        address resolver;
        uint64 ttl;
    }

同階層のフォルダにPublicResolver.solが定義されているので、AragonOS内でResolverを定義しています。

これらのクラスは、@aragon/os/contracts/factory配下のENSFactoryで実体化されているようです。

RegistrarはAragonAppとして動作しているようです。
node_modules/@aragon/os/contracts/ensでAragonAppのサブクラスとして、以下のように定義されています。

contract ENSSubdomainRegistrar is AragonApp, ENSConstants {

名前から見ると、ドメインは別途取得するとして、自由に使えるサブドメインをこのフレームワークで管理しているのかもしれません。

AragonOSじゃなければ

一般的なdAppからは、ライブラリのうちのどれか使用するとよさそうです。
https://docs.ens.domains/dapp-developer-guide/ens-libraries

結局

この時点で、自前でGanacheをAragonOS向けに設定しようというのはあきらめました。本筋のDAOやUpgradability、Better UI、Auth機能の提供につながらず、あまり生産的な活動出ない気がします。
もう少しUpgradabilityとかに注力したいとお見ます。

コメント

タイトルとURLをコピーしました