Emerald City

Transaction Auditing

Protecting the Flow community, one transaction at a time.

How Does it Work?

Emerald City hosts a FLIX instance. In short, FLIX is a place to store audited transactions. Anyone can host their own FLIX instance. When a transaction gets run, wallets can query into FLIX instances they trust and display associated audits.
Fortunately, Emerald City's FLIX instance is a peer of Flow, meaning any transactions hosted by Flow are automatically hosted by Emerald City, and vice versa. Note this doesn't necessarily mean the other has audited them, rather they will simply be discoverable from either's endpoint.

Shield's API

Get Template by ID

With the API you can query Interaction Template by their ID:
GET /v1/templates/${template_id}
=> InteractionTemplate

Get Template by Cadence Code

You can also query for Interaction Template by their cadence body:
POST /v1/templates/search
body (JSON): {
cadence_base64: "...",
network: "..." (mainnet | testnet)
=> InteractionTemplate

Get Template by Name

Interaction Template can be hosted under a static identifer (name), allowing the underlying Interaction Template to change while the way to query for it remained constant:
GET /v1/templates?name=transfer-flow
=> InteractionTemplate

Get Auditor

You can query for known Auditor information for a given network:
GET /v1/auditors?network=(mainnet | testnet)
=> [FlowInteractionTemplateAuditor]
// Flow Interaction Template Auditor
// {
// f_type: "FlowInteractionTemplateAuditor"
// f_version: "1.0.0"
// address: string
// name: string
// website_url?: string
// twitter_url?: string
// }


Emerald City's FLIX service is available at:
eg: GET https://flix.ecdao.org/v1/templates?name=transfer-flow
eg: GET https://flix.ecdao.org/v1/templates/${template_id}
eg: POST https://flix.ecdao.org/v1/templates/search
body (JSON): {
cadence_base64: "...",
network: "..." (mainnet | testnet)

Example End Result