OPKit Interoperable Domains between OP Stack Conduit <-> Rollkit using Celestia DA as a central hub
OPKit domains demonstrate novel publish-subscribe interoperability for the first time in the blockchain space! This method of interoperability is especially suitable for sovereign rollups due to its flexibility and lack of reliance on traditional consensus mechanisms.
The journey begins with the user minting a domain on the EVM chain. The data is then indexed by the indexer and posted to Celestia DA, which serves as a central data hub. Another indexer subsequently indexes the data from Celestia DA and connects natively to the sovereign rollup, such as Rollkit.
It works even with the Conduit testnet chain that LayerZero never connects to!
Why is this use case tailored with a sovereign/settled rollup rather than a smart contract directly?
With Rollkit, we can access any records natively in a trustless way. This is not possible with a smart contract because the relayer needs to submit data one by one, and consensus is also required.
Screenshots
Domain registration page with social authentication and wallet linking to the Opkit domain.
This screen shows OPKit Rollkit rollup running on a Kurtosis enclave.
This screen shows the indexer working to index domain records.
List the domains with their associated records for OPKit Rollkit and EVM (OPKit Conduit) wallet.
Query domains by their Twitter usernames.
!
Set the primary domain for the OPKit Rollkit wallet.
Claim the domain minting reward on the OPKit Rollkit chain.
OPKit Rollkit Domain Module
The blockchain node binary can be used to interact with the blockchain. To see the available commands, run:
List all domain by opkit address
opkitd query domain list-domain-opkit <opkit_address>
Example:
opkitd query domain list-domain-opkit opkit1t85skec9sf386946y8g820auhpxw8z7csky8j5
Domain:
- domain: johny.opkit
owner: 0xc4C565bdF45F54cca35036347F8BC1974c800372
string_records:
- key: opkit
value: opkit1t85skec9sf386946y8g820auhpxw8z7csky8j5
List all domain by evm address
opkitd query domain list-domain-evm <owner_address>
Example:
opkitd query domain list-domain-evm 0xc4C565bdF45F54cca35036347F8BC1974c800372
Domain:
- domain: test2.opkit
owner: 0xc4C565bdF45F54cca35036347F8BC1974c800372
string_records:
- key: github
value: EZ420
- key: opkit
value: opkit13ng4lj30e6ptpv8gm5rf2dqqyzxkm5tskvtmal
- domain: johny.opkit
owner: 0xc4C565bdF45F54cca35036347F8BC1974c800372
string_records:
- key: opkit
value: opkit1t85skec9sf386946y8g820auhpxw8z7csky8j5
List all domain by key and value of string record
opkitd query domain list-domain-by-string <key> <value>
Example:
opkitd query domain list-domain-by-string github EZ420
Domain:
- domain: test2.opkit
owner: 0xc4C565bdF45F54cca35036347F8BC1974c800372
string_records:
- key: github
value: EZ420
- key: opkit
value: opkit13ng4lj30e6ptpv8gm5rf2dqqyzxkm5tskvtmal
Set primary domain
opkitd tx domain set-primary-domain <domain> --from opkit-key --fees 5000stake
Example:
opkitd tx domain set-primary-domain test2.opkit --from opkit-key --fees 5000stake
Claim reward for domain
opkitd tx domain claim-reward <domain> --from opkit-key --fees 5000stake
Example:
opkitd tx domain claim-reward johny.opkit --from opkit-key --fees 5000stake
Query reward for domain
opkitd query domain reward <domain>
Example:
opkitd query domain reward johny.opkit
Reward:
amount:
amount: "100000000"
denom: stake
domain: johny.opkit
is_claimed: false
Links
OPKit Conduit
OPKit Conduit is an OP Stack Base L3 chain with Celestia underneath deployed with Conduit
- Chain ID: 5057
- RPC: https://rpc-opkit-domains-jlpe79dzdp.t.conduit.xyz
- Explorer: https://explorerl2new-opkit-domains-jlpe79dzdp.t.conduit.xyz
Indexer
- Public API: https://opkit-indexer.opti.domains
- Source Code: https://github.com/Opti-domains/opkit-domains/tree/master/packages/opkit-indexer
OPKit Rollkit
Containerized with docker compose and Kurtosis!
- Celestia Namespace: 0898989898989898
- Source Code: https://github.com/johnyupnode/opkit