Skip to content

Instantly share code, notes, and snippets.

@deuszx
Created March 31, 2023 13:36
Show Gist options
  • Save deuszx/7cbbe592639af918f81d8ba0afa6886e to your computer and use it in GitHub Desktop.
Save deuszx/7cbbe592639af918f81d8ba0afa6886e to your computer and use it in GitHub Desktop.
Shielder contract metadata
{
"source": {
"hash": "0x95b804b6077bd5a865dd6d8b322d4f8fb636795bb508daa14266cb89ee73ffb4",
"language": "ink! 4.0.1",
"compiler": "rustc 1.67.0-nightly",
"build_info": {
"build_mode": "Release",
"cargo_contract_version": "2.0.0",
"rust_toolchain": "nightly-x86_64-unknown-linux-gnu",
"wasm_opt_settings": {
"keep_debug_symbols": false,
"optimization_passes": "Z"
}
}
},
"contract": {
"name": "shielder",
"version": "0.1.0",
"authors": [
"Cardinal Cryptography"
],
"repository": "https://github.com/aleph-zero-foundation/aleph-node",
"homepage": "https://alephzero.org/",
"license": "Apache 2.0"
},
"spec": {
"constructors": [
{
"args": [
{
"label": "max_leaves",
"type": {
"displayName": [
"u32"
],
"type": 1
}
}
],
"docs": [
"Instantiate the contract. Set the caller as the owner."
],
"label": "new",
"payable": false,
"returnType": {
"displayName": [
"ink_primitives",
"ConstructorResult"
],
"type": 6
},
"selector": "0x9bae9d5e"
}
],
"docs": [],
"events": [
{
"args": [
{
"docs": [],
"indexed": true,
"label": "token_id",
"type": {
"displayName": [
"TokenId"
],
"type": 8
}
},
{
"docs": [],
"indexed": false,
"label": "value",
"type": {
"displayName": [
"TokenAmount"
],
"type": 9
}
},
{
"docs": [],
"indexed": false,
"label": "leaf_idx",
"type": {
"displayName": [
"u32"
],
"type": 1
}
},
{
"docs": [],
"indexed": false,
"label": "note",
"type": {
"displayName": [
"Note"
],
"type": 10
}
}
],
"docs": [],
"label": "Deposited"
},
{
"args": [
{
"docs": [],
"indexed": true,
"label": "token_id",
"type": {
"displayName": [
"TokenId"
],
"type": 8
}
},
{
"docs": [],
"indexed": false,
"label": "value",
"type": {
"displayName": [
"TokenAmount"
],
"type": 9
}
},
{
"docs": [],
"indexed": true,
"label": "recipient",
"type": {
"displayName": [
"AccountId"
],
"type": 3
}
},
{
"docs": [],
"indexed": false,
"label": "leaf_idx",
"type": {
"displayName": [
"u32"
],
"type": 1
}
},
{
"docs": [],
"indexed": false,
"label": "new_note",
"type": {
"displayName": [
"Note"
],
"type": 10
}
}
],
"docs": [],
"label": "Withdrawn"
},
{
"args": [
{
"docs": [],
"indexed": true,
"label": "token_id",
"type": {
"displayName": [
"TokenId"
],
"type": 8
}
},
{
"docs": [],
"indexed": false,
"label": "token_address",
"type": {
"displayName": [
"AccountId"
],
"type": 3
}
}
],
"docs": [],
"label": "TokenRegistered"
},
{
"args": [
{
"docs": [],
"indexed": true,
"label": "token_id",
"type": {
"displayName": [
"TokenId"
],
"type": 8
}
},
{
"docs": [],
"indexed": false,
"label": "leaf_idx",
"type": {
"displayName": [
"u32"
],
"type": 1
}
},
{
"docs": [],
"indexed": false,
"label": "new_note",
"type": {
"displayName": [
"Note"
],
"type": 10
}
}
],
"docs": [],
"label": "Merged"
}
],
"lang_error": {
"displayName": [
"ink",
"LangError"
],
"type": 7
},
"messages": [
{
"args": [
{
"label": "token_id",
"type": {
"displayName": [
"TokenId"
],
"type": 8
}
},
{
"label": "value",
"type": {
"displayName": [
"TokenAmount"
],
"type": 9
}
},
{
"label": "note",
"type": {
"displayName": [
"Note"
],
"type": 10
}
},
{
"label": "proof",
"type": {
"displayName": [
"Vec"
],
"type": 11
}
}
],
"docs": [
" Trigger deposit action (see ADR for detailed description)."
],
"label": "deposit",
"mutates": true,
"payable": false,
"returnType": {
"displayName": [
"ink",
"MessageResult"
],
"type": 12
},
"selector": "0x00000001"
},
{
"args": [
{
"label": "token_id",
"type": {
"displayName": [
"TokenId"
],
"type": 8
}
},
{
"label": "value",
"type": {
"displayName": [
"TokenAmount"
],
"type": 9
}
},
{
"label": "recipient",
"type": {
"displayName": [
"AccountId"
],
"type": 3
}
},
{
"label": "fee_for_caller",
"type": {
"displayName": [
"Option"
],
"type": 19
}
},
{
"label": "merkle_root",
"type": {
"displayName": [
"MerkleRoot"
],
"type": 10
}
},
{
"label": "nullifier",
"type": {
"displayName": [
"Nullifier"
],
"type": 10
}
},
{
"label": "new_note",
"type": {
"displayName": [
"Note"
],
"type": 10
}
},
{
"label": "proof",
"type": {
"displayName": [
"Vec"
],
"type": 11
}
}
],
"docs": [
" Trigger withdraw action (see ADR for detailed description)."
],
"label": "withdraw",
"mutates": true,
"payable": false,
"returnType": {
"displayName": [
"ink",
"MessageResult"
],
"type": 12
},
"selector": "0x00000002"
},
{
"args": [],
"docs": [
" Read the current root of the Merkle tree with notes."
],
"label": "current_merkle_root",
"mutates": false,
"payable": false,
"returnType": {
"displayName": [
"ink",
"MessageResult"
],
"type": 20
},
"selector": "0x00000003"
},
{
"args": [
{
"label": "leaf_idx",
"type": {
"displayName": [
"u32"
],
"type": 1
}
}
],
"docs": [
" Retrieve the path from the leaf to the root. `None` if the leaf does not exist."
],
"label": "merkle_path",
"mutates": false,
"payable": false,
"returnType": {
"displayName": [
"ink",
"MessageResult"
],
"type": 21
},
"selector": "0x00000004"
},
{
"args": [
{
"label": "nullifier",
"type": {
"displayName": [
"Nullifier"
],
"type": 10
}
}
],
"docs": [
" Check whether `nullifier` has been already used."
],
"label": "contains_nullifier",
"mutates": false,
"payable": false,
"returnType": {
"displayName": [
"ink",
"MessageResult"
],
"type": 24
},
"selector": "0x00000005"
},
{
"args": [
{
"label": "relation",
"type": {
"displayName": [
"Relation"
],
"type": 26
}
},
{
"label": "vk",
"type": {
"displayName": [
"Vec"
],
"type": 11
}
}
],
"docs": [
" Register a verifying key for one of the `Relation`.",
"",
" For owner use only."
],
"label": "register_vk",
"mutates": true,
"payable": false,
"returnType": {
"displayName": [
"ink",
"MessageResult"
],
"type": 12
},
"selector": "0x00000008"
},
{
"args": [
{
"label": "token_id",
"type": {
"displayName": [
"TokenId"
],
"type": 8
}
}
],
"docs": [
" Check if there is a token address registered at `token_id`."
],
"label": "registered_token_address",
"mutates": false,
"payable": false,
"returnType": {
"displayName": [
"ink",
"MessageResult"
],
"type": 27
},
"selector": "0x00000009"
},
{
"args": [
{
"label": "token_id",
"type": {
"displayName": [
"TokenId"
],
"type": 8
}
},
{
"label": "token_address",
"type": {
"displayName": [
"AccountId"
],
"type": 3
}
}
],
"docs": [
" Register a token contract (`token_address`) at `token_id`.",
"",
" For owner use only."
],
"label": "register_new_token",
"mutates": true,
"payable": false,
"returnType": {
"displayName": [
"ink",
"MessageResult"
],
"type": 12
},
"selector": "0x0000000a"
},
{
"args": [
{
"label": "token_id",
"type": {
"displayName": [
"TokenId"
],
"type": 8
}
},
{
"label": "value",
"type": {
"displayName": [
"TokenAmount"
],
"type": 9
}
},
{
"label": "merkle_root",
"type": {
"displayName": [
"MerkleRoot"
],
"type": 10
}
},
{
"label": "nullifier",
"type": {
"displayName": [
"Nullifier"
],
"type": 10
}
},
{
"label": "note",
"type": {
"displayName": [
"Note"
],
"type": 10
}
},
{
"label": "proof",
"type": {
"displayName": [
"Vec"
],
"type": 11
}
}
],
"docs": [
" Trigger deposit and merge action (see ADR for detailed description)."
],
"label": "deposit_and_merge",
"mutates": true,
"payable": false,
"returnType": {
"displayName": [
"ink",
"MessageResult"
],
"type": 12
},
"selector": "0x0000000b"
},
{
"args": [
{
"label": "token_id",
"type": {
"displayName": [
"TokenId"
],
"type": 8
}
},
{
"label": "merkle_root",
"type": {
"displayName": [
"MerkleRoot"
],
"type": 10
}
},
{
"label": "first_nullifier",
"type": {
"displayName": [
"Nullifier"
],
"type": 10
}
},
{
"label": "second_nullifier",
"type": {
"displayName": [
"Nullifier"
],
"type": 10
}
},
{
"label": "note",
"type": {
"displayName": [
"Note"
],
"type": 10
}
},
{
"label": "proof",
"type": {
"displayName": [
"Vec"
],
"type": 11
}
}
],
"docs": [
" Trigger merge action to combine the value of two notes."
],
"label": "merge",
"mutates": true,
"payable": false,
"returnType": {
"displayName": [
"ink",
"MessageResult"
],
"type": 12
},
"selector": "0x0000000c"
}
]
},
"storage": {
"root": {
"layout": {
"struct": {
"fields": [
{
"layout": {
"root": {
"layout": {
"array": {
"layout": {
"leaf": {
"key": "0xf90aa73b",
"ty": 0
}
},
"len": 4,
"offset": "0xf90aa73b"
}
},
"root_key": "0xf90aa73b"
}
},
"name": "notes"
},
{
"layout": {
"leaf": {
"key": "0x00000000",
"ty": 1
}
},
"name": "next_free_leaf"
},
{
"layout": {
"leaf": {
"key": "0x00000000",
"ty": 1
}
},
"name": "max_leaves"
},
{
"layout": {
"root": {
"layout": {
"leaf": {
"key": "0x7b0fde58",
"ty": 2
}
},
"root_key": "0x7b0fde58"
}
},
"name": "merkle_roots"
},
{
"layout": {
"root": {
"layout": {
"leaf": {
"key": "0x2c39511b",
"ty": 2
}
},
"root_key": "0x2c39511b"
}
},
"name": "nullifiers"
},
{
"layout": {
"root": {
"layout": {
"leaf": {
"key": "0x14a9bc76",
"ty": 3
}
},
"root_key": "0x14a9bc76"
}
},
"name": "registered_tokens"
},
{
"layout": {
"struct": {
"fields": [
{
"layout": {
"leaf": {
"key": "0x00000000",
"ty": 3
}
},
"name": "owner"
},
{
"layout": {
"enum": {
"dispatchKey": "0x00000000",
"name": "Option",
"variants": {
"0": {
"fields": [],
"name": "None"
},
"1": {
"fields": [
{
"layout": {
"leaf": {
"key": "0x00000000",
"ty": 2
}
},
"name": "0"
}
],
"name": "Some"
}
}
}
},
"name": "_reserved"
}
],
"name": "Data"
}
},
"name": "ownable"
}
],
"name": "Shielder"
}
},
"root_key": "0x00000000"
}
},
"types": [
{
"id": 0,
"type": {
"def": {
"primitive": "u64"
}
}
},
{
"id": 1,
"type": {
"def": {
"primitive": "u32"
}
}
},
{
"id": 2,
"type": {
"def": {
"tuple": []
}
}
},
{
"id": 3,
"type": {
"def": {
"composite": {
"fields": [
{
"type": 4,
"typeName": "[u8; 32]"
}
]
}
},
"path": [
"ink_primitives",
"types",
"AccountId"
]
}
},
{
"id": 4,
"type": {
"def": {
"array": {
"len": 32,
"type": 5
}
}
}
},
{
"id": 5,
"type": {
"def": {
"primitive": "u8"
}
}
},
{
"id": 6,
"type": {
"def": {
"variant": {
"variants": [
{
"fields": [
{
"type": 2
}
],
"index": 0,
"name": "Ok"
},
{
"fields": [
{
"type": 7
}
],
"index": 1,
"name": "Err"
}
]
}
},
"params": [
{
"name": "T",
"type": 2
},
{
"name": "E",
"type": 7
}
],
"path": [
"Result"
]
}
},
{
"id": 7,
"type": {
"def": {
"variant": {
"variants": [
{
"index": 1,
"name": "CouldNotReadInput"
}
]
}
},
"path": [
"ink_primitives",
"LangError"
]
}
},
{
"id": 8,
"type": {
"def": {
"primitive": "u16"
}
}
},
{
"id": 9,
"type": {
"def": {
"primitive": "u128"
}
}
},
{
"id": 10,
"type": {
"def": {
"array": {
"len": 4,
"type": 0
}
}
}
},
{
"id": 11,
"type": {
"def": {
"sequence": {
"type": 5
}
}
}
},
{
"id": 12,
"type": {
"def": {
"variant": {
"variants": [
{
"fields": [
{
"type": 13
}
],
"index": 0,
"name": "Ok"
},
{
"fields": [
{
"type": 7
}
],
"index": 1,
"name": "Err"
}
]
}
},
"params": [
{
"name": "T",
"type": 13
},
{
"name": "E",
"type": 7
}
],
"path": [
"Result"
]
}
},
{
"id": 13,
"type": {
"def": {
"variant": {
"variants": [
{
"fields": [
{
"type": 2
}
],
"index": 0,
"name": "Ok"
},
{
"fields": [
{
"type": 14
}
],
"index": 1,
"name": "Err"
}
]
}
},
"params": [
{
"name": "T",
"type": 2
},
{
"name": "E",
"type": 14
}
],
"path": [
"Result"
]
}
},
{
"id": 14,
"type": {
"def": {
"variant": {
"variants": [
{
"fields": [
{
"type": 15,
"typeName": "OwnableError"
}
],
"index": 0,
"name": "InsufficientPermission"
},
{
"index": 1,
"name": "TooManyNotes"
},
{
"index": 2,
"name": "UnknownMerkleRoot"
},
{
"index": 3,
"name": "NullifierAlreadyUsed"
},
{
"index": 4,
"name": "TooHighFee"
},
{
"fields": [
{
"type": 16,
"typeName": "BabyLiminalError"
}
],
"index": 5,
"name": "ChainExtension"
},
{
"fields": [
{
"type": 17,
"typeName": "PSP22Error"
}
],
"index": 6,
"name": "Psp22"
},
{
"fields": [
{
"type": 18,
"typeName": "String"
}
],
"index": 7,
"name": "InkEnv"
},
{
"index": 8,
"name": "TokenIdAlreadyRegistered"
},
{
"index": 9,
"name": "TokenIdNotRegistered"
}
]
}
},
"path": [
"shielder",
"error",
"ShielderError"
]
}
},
{
"id": 15,
"type": {
"def": {
"variant": {
"variants": [
{
"index": 0,
"name": "CallerIsNotOwner"
},
{
"index": 1,
"name": "NewOwnerIsZero"
}
]
}
},
"path": [
"openbrush_contracts",
"traits",
"errors",
"ownable",
"OwnableError"
]
}
},
{
"id": 16,
"type": {
"def": {
"variant": {
"variants": [
{
"index": 0,
"name": "IdentifierAlreadyInUse"
},
{
"index": 1,
"name": "VerificationKeyTooLong"
},
{
"index": 2,
"name": "StoreKeyErrorUnknown"
},
{
"index": 3,
"name": "UnknownVerificationKeyIdentifier"
},
{
"index": 4,
"name": "DeserializingProofFailed"
},
{
"index": 5,
"name": "DeserializingPublicInputFailed"
},
{
"index": 6,
"name": "DeserializingVerificationKeyFailed"
},
{
"index": 7,
"name": "VerificationFailed"
},
{
"index": 8,
"name": "IncorrectProof"
},
{
"index": 9,
"name": "VerifyErrorUnknown"
}
]
}
},
"path": [
"baby_liminal_extension",
"BabyLiminalError"
]
}
},
{
"id": 17,
"type": {
"def": {
"variant": {
"variants": [
{
"fields": [
{
"type": 11,
"typeName": "String"
}
],
"index": 0,
"name": "Custom"
},
{
"index": 1,
"name": "InsufficientBalance"
},
{
"index": 2,
"name": "InsufficientAllowance"
},
{
"index": 3,
"name": "ZeroRecipientAddress"
},
{
"index": 4,
"name": "ZeroSenderAddress"
},
{
"fields": [
{
"type": 11,
"typeName": "String"
}
],
"index": 5,
"name": "SafeTransferCheckFailed"
}
]
}
},
"path": [
"openbrush_contracts",
"traits",
"errors",
"psp22",
"PSP22Error"
]
}
},
{
"id": 18,
"type": {
"def": {
"primitive": "str"
}
}
},
{
"id": 19,
"type": {
"def": {
"variant": {
"variants": [
{
"index": 0,
"name": "None"
},
{
"fields": [
{
"type": 9
}
],
"index": 1,
"name": "Some"
}
]
}
},
"params": [
{
"name": "T",
"type": 9
}
],
"path": [
"Option"
]
}
},
{
"id": 20,
"type": {
"def": {
"variant": {
"variants": [
{
"fields": [
{
"type": 10
}
],
"index": 0,
"name": "Ok"
},
{
"fields": [
{
"type": 7
}
],
"index": 1,
"name": "Err"
}
]
}
},
"params": [
{
"name": "T",
"type": 10
},
{
"name": "E",
"type": 7
}
],
"path": [
"Result"
]
}
},
{
"id": 21,
"type": {
"def": {
"variant": {
"variants": [
{
"fields": [
{
"type": 22
}
],
"index": 0,
"name": "Ok"
},
{
"fields": [
{
"type": 7
}
],
"index": 1,
"name": "Err"
}
]
}
},
"params": [
{
"name": "T",
"type": 22
},
{
"name": "E",
"type": 7
}
],
"path": [
"Result"
]
}
},
{
"id": 22,
"type": {
"def": {
"variant": {
"variants": [
{
"index": 0,
"name": "None"
},
{
"fields": [
{
"type": 23
}
],
"index": 1,
"name": "Some"
}
]
}
},
"params": [
{
"name": "T",
"type": 23
}
],
"path": [
"Option"
]
}
},
{
"id": 23,
"type": {
"def": {
"sequence": {
"type": 10
}
}
}
},
{
"id": 24,
"type": {
"def": {
"variant": {
"variants": [
{
"fields": [
{
"type": 25
}
],
"index": 0,
"name": "Ok"
},
{
"fields": [
{
"type": 7
}
],
"index": 1,
"name": "Err"
}
]
}
},
"params": [
{
"name": "T",
"type": 25
},
{
"name": "E",
"type": 7
}
],
"path": [
"Result"
]
}
},
{
"id": 25,
"type": {
"def": {
"primitive": "bool"
}
}
},
{
"id": 26,
"type": {
"def": {
"variant": {
"variants": [
{
"index": 0,
"name": "Deposit"
},
{
"index": 1,
"name": "DepositAndMerge"
},
{
"index": 2,
"name": "Merge"
},
{
"index": 3,
"name": "Withdraw"
}
]
}
},
"path": [
"shielder",
"contract",
"shielder",
"Relation"
]
}
},
{
"id": 27,
"type": {
"def": {
"variant": {
"variants": [
{
"fields": [
{
"type": 28
}
],
"index": 0,
"name": "Ok"
},
{
"fields": [
{
"type": 7
}
],
"index": 1,
"name": "Err"
}
]
}
},
"params": [
{
"name": "T",
"type": 28
},
{
"name": "E",
"type": 7
}
],
"path": [
"Result"
]
}
},
{
"id": 28,
"type": {
"def": {
"variant": {
"variants": [
{
"index": 0,
"name": "None"
},
{
"fields": [
{
"type": 3
}
],
"index": 1,
"name": "Some"
}
]
}
},
"params": [
{
"name": "T",
"type": 3
}
],
"path": [
"Option"
]
}
}
],
"version": "4"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment