Watcher for the Azimuth PKI on Ethereum, used in Urbit identities. Read more about Azimuth:
This app can be run using Stack Orchestrator:
It is also hosted here
Here are some example queries:
{
azimuthIsActive(
blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
contractAddress: "0x223c067F8CF28ae173EE5CafEa60cA44C335fecB"
_point: 1
) {
value
}
censuresGetCensuredByCount(
blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
contractAddress: "0x325f68d32BdEe6Ed86E7235ff2480e2A433D6189"
_who: 6054
) {
value
}
claimsFindClaim(
blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
contractAddress: "0xe7e7f69b34D7d9Bd8d61Fb22C33b22708947971A"
_whose: 1967913144
_protocol: "text"
_claim: "Shrek is NOT Drek!"
) {
value
}
linearStarReleaseVerifyBalance(
blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
contractAddress: "0x86cd9cd0992F04231751E3761De45cEceA5d1801"
_participant: "0xbD396c580d868FBbE4a115DD667E756079880801"
) {
value
}
conditionalStarReleaseWithdrawLimit(
blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
contractAddress: "0x8C241098C3D3498Fe1261421633FD57986D74AeA"
_participant: "0x7F0584938E649061e80e45cF88E6d8dDDb22f2aB"
_batch: 2
) {
value
}
pollsGetUpgradeProposalCount(
blockHash: "0xeaf611fabbe604932d36b97c89955c091e9582e292b741ebf144962b9ff5c271"
contractAddress: "0x7fEcaB617c868Bb5996d99D95200D2Fa708218e4"
) {
value
}
eclipticBalanceOf(
blockHash: "0x5e82abbe6474caf7b5325022db1d1287ce352488b303685493289770484f54f4"
contractAddress: "0x33EeCbf908478C10614626A9D304bfe18B78DD73"
_owner: "0x4b5E239C1bbb98d44ea23BC9f8eC7584F54096E8"
) {
value
}
delegatedSendingCanSend(
blockHash: "0x2461e78f075e618173c524b5ab4309111001517bb50cfd1b3505aed5433cf5f9"
contractAddress: "0xf6b461fE1aD4bd2ce25B23Fe0aff2ac19B3dFA76"
_as: 1
_point: 1
) {
value
}
}
Steps to generate Azimuth watchers using the code generator (@cerc-io/codegen
)
-
Clone the original Azimuth repo for required contracts:
git clone [email protected]:urbit/azimuth.git # Install dependencies npm install # Contracts are located in the contracts folder
-
Setup
cerc-io/watcher-ts
repo:git clone [email protected]:cerc-io/watcher-ts.git # Install dependencies and build packages yarn install && yarn build
-
Create a folder to place all the generated watchers in:
mkdir -p azimuth-watcher-ts/packages
-
In
watcher-ts/packages/codegen
, create aconfig.yaml
file with required codegen config for generating the watcher for a contractFor example, for
Azimuth
contract:# Contracts to watch (required). contracts: # Contract name. - name: Azimuth # Contract file path or an url. path: /home/user/azimuth/contracts/Azimuth.sol # Contract kind kind: Azimuth # Output folder path (logs output using `stdout` if not provided). outputFolder: /home/user/azimuth-watcher-ts/packages/azimuth-watcher # Code generation mode [eth_call | storage | all | none] (default: none). mode: eth_call # Kind of watcher [lazy | active] (default: active). kind: active # Watcher server port (default: 3008). port: 3001 # Solc version to use (optional) # If not defined, uses solc version listed in dependencies solc: v0.4.24+commit.e67f0147 # Flatten the input contract file(s) [true | false] (default: true). flatten: true
Note: Create
.sol
files with the contract code from Etherscan forConditionalStarRelease
,DelegatedSending
,Ecliptic
andLinearStarRelease
contracts and use the file path forcontracts.path
-
Run codegen command to generate the watcher:
# In watcher-ts/packages/codegen yarn codegen --config-file ./config.yaml
-
Update
contracts
,outputFolder
andport
fields in the config and re-run the codegen command for all other contracts -
Setup the parent folder
/home/user/azimuth-watcher-ts
where all the generated watchers are placed as a monorepo -
The gateway GQL server can be used to proxy queries to their respective watchers