Ancon Protocol
Authenticity and provenance data economy decentralized chain
|
Wave 8 Filecoin Foundation grant recipient
Documentation (WIP)
DApps
Getting Started
Endpoints
Running an Ancon Protocol v0.2.4 module with Gaia, Vega testnet
Compile
Note: Requires Go 1.17+
- Clone
https://github.com/Electronic-Signatures-Industries/ancon-protocol-cosmos-hub
- Download Starport
- Run
starport chain build
- Copy
go/bin/gaiad
to /usr/local/bin
Running Your Own Full-Node
Note: Requires Vega Upgrade to be live on testnet
- Clean any existing files
rm -rf .gaia/
- Create keys or use existing
gaiad keys add mykey -i --keyring-backend file
- Initialize
gaiad init mynode --chain-id vega-testnet
- Copy
app.toml
and config.toml
to .gaia/config
- Extract
gen.zip
to .gaia/config/genesis.json
- Run
gaiad start --x-crisis-skip-assert-invariants
Soon
Roadmap to Ancon 1.0.0
October 2021
- EVM module
- Grant M2 - NFT bridges ETH-Cosmos-Flow
- NFT Marketplaces - Use Case
- Cleaning, fixes, tech debt
- V0.2.0
November - December 2021
- Grant M3 - Ancon Data Pipes: Cosmos-Ethereum IPLD DAGs ETL
- V0.3.0
Features
- EVM Cross chain bridges, use Ancon to distribute NFTs into other chains!
- Built in onchain metadata
- Metadata security and permissions using Decentralized Identities (DID)
- EVM Smart Contracts Module
- Native DID, NFT, Metadata modules
- Supports Coinbase Rosetta
- Supports Graphql
- Supports Graphsync
- A decentralized notary service where you "stake" your hardware smart card
- A decentralized lottery service where the NFT is the lotto ticket
- A decentralized wallet service using smard cards issued by governtment for zero KYC
- A decentrlaized cross chain NFT marketplace
- A decentralized invoice factoring NFT using IBC, Ancon and Terra
Milestone 2 - Developer Notes
Cross Chain NFT Ownership (DID or Ethereum account)
ICS23/IBC Verification Cosmos
- Use KVStore to query for proofs for 0.2.0 demo
- Complete
ancon_getProofs
to use ABCIQueryWithOptions
- Store proofs in IPLD and IPFS
- Complete
ancon_verifyMembership
ICS23/IBC Verification EVM
- Use ics23.sol to verifiy signatures
- Add additional user and verifier whitelisting
- Add
updateHeader
and add a recurring cronjob
- For EVM to Cosmos consider using
HashFromByteSlices
ICS23/IBC Verification Flow
- Migrate ICS23 Rust to Flow Cadence
- Add additional user and verifier whitelisting
- Add
updateHeader
and add a recurring cronjob
- For Flow to Cosmos consider using
HashFromByteSlices
Verification Summary
Long term, IBC is the way to go but still early in EVM integration. Consider using IBC WASM Client or IBC Middleware. The latter is useful
to implement Milestone 3 Graphsync and Data Pipes.
Custom EVM JSON RPC Summary
Think we got a pretty good understanding on how to use it and it will be expanded, it gives us basically a way to send EVM and Cosmos transactions to the Evmos module and let it handle it. AnconJS repo has the implementation for frontend, backend is using Custom JSON RPC.
Frontend tasks for 0.2.0
- Alice must send Cosmos Transaction MsgChangeMetadataOwnership through EVM
- Alice requests tx proofs either with JSON RPC or REST, if REST must return a hash cid to fetch from IPFS or Ancon IPLD.
- Alice tx proofs can further be used to request other proofs or credentials with proofs or claims (EIP1812).
- Alice sends proofs/claims to EVM A and EVM B
- EVM A verifies merkle proof and/or verifies Alice (EIP1812), if OK, proceeds to change owner or delegate to a DID ether address.
- EVM B verifies merkle proof and/or verifies Alice (EIP1812), if OK, proceeds to (change owner by default) mint or transfer from escrow DID ether address.
- Alice needs to manually complete/claim cross ownership.
- Ancon replicates/publish to IPFS change metadata ownership from
unconfirmed
to verified
, adding two transaction hashes in multiformat (as cid).
Summary for frontend tasks
Once again, because of timelines, this can be improved using IBC protocol.
Flow tasks for 0.2.0
Practically need to migrate from ics23 Rust to Cadence, estimates are around 2 weeks and should be easy to integrate with the existing frontend implementation. We'll have to do a lot of upfront code due to Flow missing some pieces, eg available DIDs.
Summary for Flow integration
We should not stay long in Flow, if code migration works, then we can document a plan for doing similar for other chains.
Get started
Bootstrap origin and configs
./init.sh
Note: Configure your local testnet mnemonic
After initializing
ancon-protocold start --rpc.unsafe=true --json-rpc.api eth,txpool,personal,net,debug,web3,miner --home ~/.ancon-protocold --keyring-backend test
Your blockchain in development can be configured with config.yml
. To learn more, see the Starport docs.
Launch
To launch your blockchain live on multiple nodes, use starport network
commands. Learn more about Starport Network.
Web Frontend
Starport has scaffolded a Vue.js-based web app in the vue
directory. Run the following commands to install dependencies and start the app:
cd vue
npm install
npm run serve
The frontend app is built using the @starport/vue
and @starport/vuex
packages. For details, see the monorepo for Starport front-end development.
Learn more
DevOps Setup
Contribute
Copyright Industrias de Firmas Electronicas SA, 2021