diff --git a/docs/README.md b/docs/README.md index 5247e052..701d26ce 100644 --- a/docs/README.md +++ b/docs/README.md @@ -17,7 +17,7 @@ - Identity: - [DID Methods](design/did-methods.md) - Supported DID method - [IndyBesu DID Registry](design/indybesu-did-registry.md) - `indybesu` DID Registry - - [CL Registry](design/cl-registry.md) + - [Anoncreds Registry](design/cl-registry.md) - [Client](design/vdr.md) - design of VDR library ### Migration documents @@ -27,7 +27,7 @@ ### Development designs - [Roadmap](./roadmap.md) -- [DID and CL registers approach](./design/registry.md) +- [DID and Anoncreds registers approach](./design/registry.md) - [Transaction Endorsement](./design/endorsement.md) - [Contract upgradability](./design/upgradability.md) - [Legacy identifiers support](./design/legacy-identifiers-support.md) diff --git a/docs/design/auth.md b/docs/design/auth.md index f52a1b12..177d8445 100644 --- a/docs/design/auth.md +++ b/docs/design/auth.md @@ -232,7 +232,7 @@ Contract name: **transactionAllowed** | EthereumExtDidRegistry | changed | any | Get block number of latest DID change | | EthereumExtDidRegistry | nonce | any | Get nonce to signe for endorsing | -### CL Registry management +### Anoncreds Registry management | Contract | Method | Required Role | Action Description | |------------------------------|----------------------------------|-----------------------------|-------------------------------------------------| diff --git a/docs/design/cl-registry.md b/docs/design/cl-registry.md index 7701c820..8e74f8d6 100644 --- a/docs/design/cl-registry.md +++ b/docs/design/cl-registry.md @@ -1,4 +1,4 @@ -# CL Registry +# AnonCreds Registry ## Schema diff --git a/docs/design/contracts.png b/docs/design/contracts.png index 70d04086..38b4a88e 100644 Binary files a/docs/design/contracts.png and b/docs/design/contracts.png differ diff --git a/docs/design/contracts.puml b/docs/design/contracts.puml index 07a0c85f..bb0e3061 100644 --- a/docs/design/contracts.puml +++ b/docs/design/contracts.puml @@ -62,20 +62,20 @@ package "Smart Contracts" { component [Universal Did Resolver] note bottom of [Universal Did Resolver] Resolve Issuer DID from various DID registries - - used by CL contracts to verify did existence and owner + - used by AnonCreds contracts to verify did existence and owner end note } - package "CL" { + package "Anoncreds" { component [Schema Registry] note bottom of [Schema Registry] - Store CL schemas + Store AnonCreds schemas end note component [Credential Definition Registry] note top of [Credential Definition Registry] - Store CL Credential Definitions + Store AnonCreds Credential Definitions end note } diff --git a/docs/design/did-methods.md b/docs/design/did-methods.md index cfef9722..6cf70751 100644 --- a/docs/design/did-methods.md +++ b/docs/design/did-methods.md @@ -2,7 +2,7 @@ Out of box Ledger provides an ability to use one of two supported DID methods: `did:ethr` or `did:indybesu`. -Contracts implementing both methods are deployed on the network and integrated with `CL Registry`. +Contracts implementing both methods are deployed on the network and integrated with `Anoncreds Registry`. Ledger `permission` related modules are implemented in a way to use **account address** but not a DID. diff --git a/docs/design/endorsement.md b/docs/design/endorsement.md index a15a6a73..5558cdf1 100644 --- a/docs/design/endorsement.md +++ b/docs/design/endorsement.md @@ -93,7 +93,7 @@ function changeOwnerSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 s TO BE defined later. -### CL Registry (Schema / Credential Definition) +### Anoncreds Registry (Schema / Credential Definition) #### Flow diff --git a/docs/design/registry.md b/docs/design/registry.md index ae1b9c05..eda1a919 100644 --- a/docs/design/registry.md +++ b/docs/design/registry.md @@ -1,4 +1,4 @@ -## DID/CL Registries approach +## DID/Anoncreds Registries approach General design for smart contracts oriented for storing objects like DID Document, Schema, Credential Definition. The main question is whether we need to validate storing object or not? diff --git a/docs/roadmap.md b/docs/roadmap.md index f3a59760..a90f7a23 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -14,7 +14,7 @@ Note: Right now we have finished PoC implementation. Roadmap tasks and their pri * Network identity implementation: * Indy2 DID method * Basic DID Document validation - * CL Registry: + * Anoncreds Registry: * Schema and Credential Definition registries with basic validation * Migration: * Design of migration from legacy (Indy) network @@ -23,7 +23,7 @@ Note: Right now we have finished PoC implementation. Roadmap tasks and their pri * VDR: * Client library preparing and executing Ledger transactions (native part) * Support Indy2 DID Method - * CL Anoncreds entities (schema, credential definition) + * Anoncreds Anoncreds entities (schema, credential definition) * CI/CD * Basic pipelines * Docs @@ -33,8 +33,8 @@ Note: Right now we have finished PoC implementation. Roadmap tasks and their pri * Network identity implementation: * Deprecate Indy2 method in favor of using `did:ethr` contract and specification - * CL Registry: implement event approach matching to `did:ethr` design - * Endorsement support for DID Documents and CL entities + * Anoncreds Registry: implement event approach matching to `did:ethr` design + * Endorsement support for DID Documents and Anoncreds entities * Network Permission implementation: * Restrict execution of transactions exclusively to users with specific roles * Network configuration @@ -80,7 +80,7 @@ Note: Right now we have finished PoC implementation. Roadmap tasks and their pri * Support Indy 2.0 in ACA-Py * Migration: * Process finalization -* CL Registry: +* Anoncreds Registry: * Revocation entities support * Command Line Interface * CI/CD diff --git a/network/config.json b/network/config.json index e486096e..a1cabe4b 100644 --- a/network/config.json +++ b/network/config.json @@ -27,11 +27,11 @@ "address": "0x0000000000000000000000000000000000003333" }, "schemaRegistry": { - "specPath": "smart_contracts/artifacts/contracts/cl/SchemaRegistry.sol/SchemaRegistry.json", + "specPath": "smart_contracts/artifacts/contracts/anoncreds/SchemaRegistry.sol/SchemaRegistry.json", "address": "0x0000000000000000000000000000000000005555" }, "credDefRegistry": { - "specPath": "smart_contracts/artifacts/contracts/cl/CredentialDefinitionRegistry.sol/CredentialDefinitionRegistry.json", + "specPath": "smart_contracts/artifacts/contracts/anoncreds/CredentialDefinitionRegistry.sol/CredentialDefinitionRegistry.json", "address": "0x0000000000000000000000000000000000004444" }, "legacyMappingRegistry": { diff --git a/network/config/besu/genesis.json b/network/config/besu/genesis.json index 2caff197..e1da75ff 100644 --- a/network/config/besu/genesis.json +++ b/network/config/besu/genesis.json @@ -195,12 +195,12 @@ "0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000019999", "0000000000000000000000000000000000000000000000000000000000000002": "0x0000000000000000000000000000000000000000000000000000000000006666", "f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00": "0x0000000000000000000000000000000000000000000000000000000000000001", - "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x00000000000000000000000025d5440cf67ec858396dcd050fe62b3575da47a9" + "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000007e504d148c56f4e45c0a0392b14b3695760631c7" } }, - "0x25d5440cf67ec858396dcd050fe62b3575da47a9": { + "0x7e504d148c56f4e45c0a0392b14b3695760631c7": { "comment": "Implementation: Smart contract to manage schemas", - "code": "0x6080604052600436106100705760003560e01c806383d3fb3c1161004e57806383d3fb3c146100d2578063ad3cb1cc146100f2578063aebecb1c14610130578063c0c53b8b1461015d57600080fd5b80634812cbf8146100755780634f1ef2861461009757806352d1902d146100aa575b600080fd5b34801561008157600080fd5b50610095610090366004610ca7565b61017d565b005b6100956100a5366004610da8565b610233565b3480156100b657600080fd5b506100bf610252565b6040519081526020015b60405180910390f35b3480156100de57600080fd5b506100956100ed366004610e50565b61026f565b3480156100fe57600080fd5b50610123604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100c99190610f2c565b34801561013c57600080fd5b5061015061014b366004610f3f565b610286565b6040516100c99190610f58565b34801561016957600080fd5b50610095610178366004610f8b565b610390565b6040516000906101a590601960f81b90839030908e908b908b908b908b908b90602001610fd6565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8c1691830191909152606082018a9052608082018990529150610227908b9060019060a0016020604051602081039080840390855afa158015610213573d6000803e3d6000fd5b5050506020604051035188888888886104a7565b50505050505050505050565b61023b610786565b6102448261082d565b61024e8282610893565b5050565b600061025c610955565b506000805160206112b883398151915290565b61027e863387878787876104a7565b505050505050565b61028e610c1c565b6000828152600360205260408120600101548391036102c85760405163063de83560e21b8152600481018290526024015b60405180910390fd5b6000838152600360205260409081902081518083019092528054829082906102ef9061105c565b80601f016020809104026020016040519081016040528092919081815260200182805461031b9061105c565b80156103685780601f1061033d57610100808354040283529160200191610368565b820191906000526020600020905b81548152906001019060200180831161034b57829003601f168201915b5050509183525050604080516020818101909252600193909301548352015291505b50919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff16806103da5750805467ffffffffffffffff808416911610155b156103f85760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff191667ffffffffffffffff831617600160401b1781556104238561099e565b600180546001600160a01b038681166001600160a01b0319928316179092556002805492861692909116919091179055805468ff00000000000000001916815560405167ffffffffffffffff831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6002546040516301daf29b60e21b81523360048201526001600160a01b039091169063076bca6c9060240160006040518083038186803b1580156104ea57600080fd5b505afa1580156104fe573d6000803e3d6000fd5b50505060008681526003602052604090206001015486915015610537576040516347f6332960e11b8152600481018290526024016102bf565b84848989806001600160a01b0316826001600160a01b031614610580576040516316343f1760e31b81526001600160a01b038083166004830152831660248201526044016102bf565b6001546040516366874f2560e01b81526001600160a01b03909116906366874f25906105b29087908790600401611090565b60a060405180830381865afa9250505080156105eb575060408051601f3d908101601f191682019092526105e8918101906110bf565b60015b610694573d808015610619576040519150601f19603f3d011682016040523d82523d6000602084013e61061e565b606091505b506106308163431dc9ff60e11b6109c8565b15610652578484604051634c92543b60e01b81526004016102bf929190611090565b61066381631859e3bb60e11b6109c8565b1561068557848460405163046cb69560e21b81526004016102bf929190611090565b61068e816109ec565b506106fd565b80516001600160a01b038481169116146106d4576040516316343f1760e31b81526001600160a01b038084166004830152841660248201526044016102bf565b8060800151156106fb5784846040516350943b5760e11b81526004016102bf929190611090565b505b60008a815260036020526040902061071687898361118b565b5060008a8152600360205260409081902042600190910155517f45fee04f2246b5d68ef5c7ef25c36f53a681e27c076395d9c46b22af51e8b78290610770908c908f909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061080d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108016000805160206112b8833981519152546001600160a01b031690565b6001600160a01b031614155b1561082b5760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b15801561087857600080fd5b505afa15801561088c573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156108ed575060408051601f3d908101601f191682019092526108ea9181019061124b565b60015b61091557604051634c9c8ce360e01b81526001600160a01b03831660048201526024016102bf565b6000805160206112b8833981519152811461094657604051632a87526960e21b8152600481018290526024016102bf565b61095083836109f8565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082b5760405163703e46dd60e11b815260040160405180910390fd5b6109a6610a4e565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806109d484611264565b6001600160e01b031984811691161491505092915050565b60208101815182018082fd5b610a0182610a97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a46576109508282610afc565b61024e610b72565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661082b57604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b600003610acd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016102bf565b6000805160206112b883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b19919061129b565b600060405180830381855af49150503d8060008114610b54576040519150601f19603f3d011682016040523d82523d6000602084013e610b59565b606091505b5091509150610b69858383610b91565b95945050505050565b341561082b5760405163b398979f60e01b815260040160405180910390fd5b606082610ba657610ba182610bf0565b610be9565b8151158015610bbd57506001600160a01b0384163b155b15610be657604051639996b31560e01b81526001600160a01b03851660048201526024016102bf565b50805b9392505050565b805115610c005780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b604051806040016040528060608152602001610c446040518060200160405280600081525090565b905290565b6001600160a01b0381168114610c1957600080fd5b60008083601f840112610c7057600080fd5b50813567ffffffffffffffff811115610c8857600080fd5b602083019150836020828501011115610ca057600080fd5b9250929050565b600080600080600080600080600060e08a8c031215610cc557600080fd5b8935610cd081610c49565b985060208a013560ff81168114610ce657600080fd5b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff80821115610d1857600080fd5b610d248d838e01610c5e565b909650945060c08c0135915080821115610d3d57600080fd5b50610d4a8c828d01610c5e565b915080935050809150509295985092959850929598565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610da057610da0610d61565b604052919050565b60008060408385031215610dbb57600080fd5b8235610dc681610c49565b915060208381013567ffffffffffffffff80821115610de457600080fd5b818601915086601f830112610df857600080fd5b813581811115610e0a57610e0a610d61565b610e1c601f8201601f19168501610d77565b91508082528784828501011115610e3257600080fd5b80848401858401376000848284010152508093505050509250929050565b60008060008060008060808789031215610e6957600080fd5b8635610e7481610c49565b955060208701359450604087013567ffffffffffffffff80821115610e9857600080fd5b610ea48a838b01610c5e565b90965094506060890135915080821115610ebd57600080fd5b50610eca89828a01610c5e565b979a9699509497509295939492505050565b60005b83811015610ef7578181015183820152602001610edf565b50506000910152565b60008151808452610f18816020860160208601610edc565b601f01601f19169290920160200192915050565b602081526000610be96020830184610f00565b600060208284031215610f5157600080fd5b5035919050565b602081526000825160406020840152610f746060840182610f00565b905060208401515160408401528091505092915050565b600080600060608486031215610fa057600080fd5b8335610fab81610c49565b92506020840135610fbb81610c49565b91506040840135610fcb81610c49565b809150509250925092565b6001600160f81b03198a81168252891660018201526bffffffffffffffffffffffff19606089811b8216600284015288901b1660168201526b637265617465536368656d6160a01b602a82015260368101869052600084866056840137848201605681016000815284868237506000930160560192835250909998505050505050505050565b600181811c9082168061107057607f821691505b60208210810361038a57634e487b7160e01b600052602260045260246000fd5b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060a082840312156110d157600080fd5b60405160a0810181811067ffffffffffffffff821117156110f4576110f4610d61565b604052825161110281610c49565b808252506020830151602082015260408301516040820152606083015160608201526080830151801515811461113757600080fd5b60808201529392505050565b601f821115610950576000816000526020600020601f850160051c8101602086101561116c5750805b601f850160051c820191505b8181101561027e57828155600101611178565b67ffffffffffffffff8311156111a3576111a3610d61565b6111b7836111b1835461105c565b83611143565b6000601f8411600181146111eb57600085156111d35750838201355b600019600387901b1c1916600186901b17835561088c565b600083815260209020601f19861690835b8281101561121c57868501358255602094850194600190920191016111fc565b50868210156112395760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60006020828403121561125d57600080fd5b5051919050565b805160208201516001600160e01b031980821692919060048310156112935780818460040360031b1b83161693505b505050919050565b600082516112ad818460208701610edc565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212204a6b1c815f9db84a075438a82bb7288cd09a021162c7a5a6477e3c55e4473b1064736f6c63430008170033" + "code": "0x6080604052600436106100705760003560e01c806383d3fb3c1161004e57806383d3fb3c146100d2578063ad3cb1cc146100f2578063aebecb1c14610130578063c0c53b8b1461015d57600080fd5b80634812cbf8146100755780634f1ef2861461009757806352d1902d146100aa575b600080fd5b34801561008157600080fd5b50610095610090366004610ca7565b61017d565b005b6100956100a5366004610da8565b610233565b3480156100b657600080fd5b506100bf610252565b6040519081526020015b60405180910390f35b3480156100de57600080fd5b506100956100ed366004610e50565b61026f565b3480156100fe57600080fd5b50610123604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100c99190610f2c565b34801561013c57600080fd5b5061015061014b366004610f3f565b610286565b6040516100c99190610f58565b34801561016957600080fd5b50610095610178366004610f8b565b610390565b6040516000906101a590601960f81b90839030908e908b908b908b908b908b90602001610fd6565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8c1691830191909152606082018a9052608082018990529150610227908b9060019060a0016020604051602081039080840390855afa158015610213573d6000803e3d6000fd5b5050506020604051035188888888886104a7565b50505050505050505050565b61023b610786565b6102448261082d565b61024e8282610893565b5050565b600061025c610955565b506000805160206112b883398151915290565b61027e863387878787876104a7565b505050505050565b61028e610c1c565b6000828152600360205260408120600101548391036102c85760405163063de83560e21b8152600481018290526024015b60405180910390fd5b6000838152600360205260409081902081518083019092528054829082906102ef9061105c565b80601f016020809104026020016040519081016040528092919081815260200182805461031b9061105c565b80156103685780601f1061033d57610100808354040283529160200191610368565b820191906000526020600020905b81548152906001019060200180831161034b57829003601f168201915b5050509183525050604080516020818101909252600193909301548352015291505b50919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff16806103da5750805467ffffffffffffffff808416911610155b156103f85760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff191667ffffffffffffffff831617600160401b1781556104238561099e565b600180546001600160a01b038681166001600160a01b0319928316179092556002805492861692909116919091179055805468ff00000000000000001916815560405167ffffffffffffffff831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6002546040516301daf29b60e21b81523360048201526001600160a01b039091169063076bca6c9060240160006040518083038186803b1580156104ea57600080fd5b505afa1580156104fe573d6000803e3d6000fd5b50505060008681526003602052604090206001015486915015610537576040516347f6332960e11b8152600481018290526024016102bf565b84848989806001600160a01b0316826001600160a01b031614610580576040516316343f1760e31b81526001600160a01b038083166004830152831660248201526044016102bf565b6001546040516366874f2560e01b81526001600160a01b03909116906366874f25906105b29087908790600401611090565b60a060405180830381865afa9250505080156105eb575060408051601f3d908101601f191682019092526105e8918101906110bf565b60015b610694573d808015610619576040519150601f19603f3d011682016040523d82523d6000602084013e61061e565b606091505b506106308163431dc9ff60e11b6109c8565b15610652578484604051634c92543b60e01b81526004016102bf929190611090565b61066381631859e3bb60e11b6109c8565b1561068557848460405163046cb69560e21b81526004016102bf929190611090565b61068e816109ec565b506106fd565b80516001600160a01b038481169116146106d4576040516316343f1760e31b81526001600160a01b038084166004830152841660248201526044016102bf565b8060800151156106fb5784846040516350943b5760e11b81526004016102bf929190611090565b505b60008a815260036020526040902061071687898361118b565b5060008a8152600360205260409081902042600190910155517f45fee04f2246b5d68ef5c7ef25c36f53a681e27c076395d9c46b22af51e8b78290610770908c908f909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061080d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108016000805160206112b8833981519152546001600160a01b031690565b6001600160a01b031614155b1561082b5760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b15801561087857600080fd5b505afa15801561088c573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156108ed575060408051601f3d908101601f191682019092526108ea9181019061124b565b60015b61091557604051634c9c8ce360e01b81526001600160a01b03831660048201526024016102bf565b6000805160206112b8833981519152811461094657604051632a87526960e21b8152600481018290526024016102bf565b61095083836109f8565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082b5760405163703e46dd60e11b815260040160405180910390fd5b6109a6610a4e565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806109d484611264565b6001600160e01b031984811691161491505092915050565b60208101815182018082fd5b610a0182610a97565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a46576109508282610afc565b61024e610b72565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661082b57604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b600003610acd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016102bf565b6000805160206112b883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b19919061129b565b600060405180830381855af49150503d8060008114610b54576040519150601f19603f3d011682016040523d82523d6000602084013e610b59565b606091505b5091509150610b69858383610b91565b95945050505050565b341561082b5760405163b398979f60e01b815260040160405180910390fd5b606082610ba657610ba182610bf0565b610be9565b8151158015610bbd57506001600160a01b0384163b155b15610be657604051639996b31560e01b81526001600160a01b03851660048201526024016102bf565b50805b9392505050565b805115610c005780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b604051806040016040528060608152602001610c446040518060200160405280600081525090565b905290565b6001600160a01b0381168114610c1957600080fd5b60008083601f840112610c7057600080fd5b50813567ffffffffffffffff811115610c8857600080fd5b602083019150836020828501011115610ca057600080fd5b9250929050565b600080600080600080600080600060e08a8c031215610cc557600080fd5b8935610cd081610c49565b985060208a013560ff81168114610ce657600080fd5b975060408a0135965060608a0135955060808a0135945060a08a013567ffffffffffffffff80821115610d1857600080fd5b610d248d838e01610c5e565b909650945060c08c0135915080821115610d3d57600080fd5b50610d4a8c828d01610c5e565b915080935050809150509295985092959850929598565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610da057610da0610d61565b604052919050565b60008060408385031215610dbb57600080fd5b8235610dc681610c49565b915060208381013567ffffffffffffffff80821115610de457600080fd5b818601915086601f830112610df857600080fd5b813581811115610e0a57610e0a610d61565b610e1c601f8201601f19168501610d77565b91508082528784828501011115610e3257600080fd5b80848401858401376000848284010152508093505050509250929050565b60008060008060008060808789031215610e6957600080fd5b8635610e7481610c49565b955060208701359450604087013567ffffffffffffffff80821115610e9857600080fd5b610ea48a838b01610c5e565b90965094506060890135915080821115610ebd57600080fd5b50610eca89828a01610c5e565b979a9699509497509295939492505050565b60005b83811015610ef7578181015183820152602001610edf565b50506000910152565b60008151808452610f18816020860160208601610edc565b601f01601f19169290920160200192915050565b602081526000610be96020830184610f00565b600060208284031215610f5157600080fd5b5035919050565b602081526000825160406020840152610f746060840182610f00565b905060208401515160408401528091505092915050565b600080600060608486031215610fa057600080fd5b8335610fab81610c49565b92506020840135610fbb81610c49565b91506040840135610fcb81610c49565b809150509250925092565b6001600160f81b03198a81168252891660018201526bffffffffffffffffffffffff19606089811b8216600284015288901b1660168201526b637265617465536368656d6160a01b602a82015260368101869052600084866056840137848201605681016000815284868237506000930160560192835250909998505050505050505050565b600181811c9082168061107057607f821691505b60208210810361038a57634e487b7160e01b600052602260045260246000fd5b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060a082840312156110d157600080fd5b60405160a0810181811067ffffffffffffffff821117156110f4576110f4610d61565b604052825161110281610c49565b808252506020830151602082015260408301516040820152606083015160608201526080830151801515811461113757600080fd5b60808201529392505050565b601f821115610950576000816000526020600020601f850160051c8101602086101561116c5750805b601f850160051c820191505b8181101561027e57828155600101611178565b67ffffffffffffffff8311156111a3576111a3610d61565b6111b7836111b1835461105c565b83611143565b6000601f8411600181146111eb57600085156111d35750838201355b600019600387901b1c1916600186901b17835561088c565b600083815260209020601f19861690835b8281101561121c57868501358255602094850194600190920191016111fc565b50868210156112395760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60006020828403121561125d57600080fd5b5051919050565b805160208201516001600160e01b031980821692919060048310156112935780818460040360031b1b83161693505b505050919050565b600082516112ad818460208701610edc565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212200290f7c5066759747e478a82d72a5e091d36a698804b5dddb698f97b257f7e3f64736f6c63430008170033" }, "0x0000000000000000000000000000000000004444": { "comment": "Proxy: Smart contract to manage credential definitions", @@ -211,12 +211,12 @@ "0000000000000000000000000000000000000000000000000000000000000002": "0x0000000000000000000000000000000000000000000000000000000000006666", "0000000000000000000000000000000000000000000000000000000000000003": "0x0000000000000000000000000000000000000000000000000000000000005555", "f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00": "0x0000000000000000000000000000000000000000000000000000000000000001", - "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000592851911a1390a89bb93a4e00dc3818e6d84b03" + "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000ec8c121e00fc6fef0e1a4a362c38c4b24ec8dec4" } }, - "0x592851911a1390a89bb93a4e00dc3818e6d84b03": { + "0xec8c121e00fc6fef0e1a4a362c38c4b24ec8dec4": { "comment": "Implementation: Smart contract to manage credential definitions", - "code": "0x6080604052600436106100705760003560e01c80639f889db51161004e5780639f889db5146100d2578063ad3cb1cc146100ff578063b6c409751461013d578063f8c8765e1461015d57600080fd5b80631108cd7b146100755780634f1ef2861461009757806352d1902d146100aa575b600080fd5b34801561008157600080fd5b50610095610090366004610d35565b61017d565b005b6100956100a5366004610eb0565b610237565b3480156100b657600080fd5b506100bf610256565b6040519081526020015b60405180910390f35b3480156100de57600080fd5b506100f26100ed366004610f42565b610273565b6040516100c99190610fab565b34801561010b57600080fd5b50610130604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100c99190610fde565b34801561014957600080fd5b50610095610158366004610ff1565b61037d565b34801561016957600080fd5b50610095610178366004611086565b610396565b6040516000906101a790601960f81b90839030908f908c908c908c908c908c908c906020016110e2565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8d1691830191909152606082018b9052608082018a9052915061022a908c9060019060a0016020604051602081039080840390855afa158015610215573d6000803e3d6000fd5b505050602060405103518989898989896104b8565b5050505050505050505050565b61023f610815565b610248826108bc565b6102528282610922565b5050565b60006102606109e4565b506000805160206114a983398151915290565b61027b610cab565b6000828152600460205260408120600101548391036102b557604051634f4e6fe360e11b8152600481018290526024015b60405180910390fd5b6000838152600460205260409081902081518083019092528054829082906102dc9061117a565b80601f01602080910402602001604051908101604052809291908181526020018280546103089061117a565b80156103555780601f1061032a57610100808354040283529160200191610355565b820191906000526020600020905b81548152906001019060200180831161033857829003601f168201915b5050509183525050604080516020818101909252600193909301548352015291505b50919050565b61038d87338888888888886104b8565b50505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff16806103df575080546001600160401b03808416911610155b156103fd5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561042786610a2d565b600180546001600160a01b038781166001600160a01b031992831617909255600380548784169083161790556002805492861692909116919091179055805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b6002546040516301daf29b60e21b81523360048201526001600160a01b039091169063076bca6c9060240160006040518083038186803b1580156104fb57600080fd5b505afa15801561050f573d6000803e3d6000fd5b505050600087815260046020526040902060010154879150156105485760405163b1a7a2af60e01b8152600481018290526024016102ac565b85858a8a806001600160a01b0316826001600160a01b031614610591576040516316343f1760e31b81526001600160a01b038083166004830152831660248201526044016102ac565b6001546040516366874f2560e01b81526001600160a01b03909116906366874f25906105c390879087906004016111ae565b60a060405180830381865afa9250505080156105fc575060408051601f3d908101601f191682019092526105f9918101906111dd565b60015b6106a5573d80801561062a576040519150601f19603f3d011682016040523d82523d6000602084013e61062f565b606091505b506106418163431dc9ff60e11b610a57565b15610663578484604051634c92543b60e01b81526004016102ac9291906111ae565b61067481631859e3bb60e11b610a57565b1561069657848460405163046cb69560e21b81526004016102ac9291906111ae565b61069f81610a7b565b5061070e565b80516001600160a01b038481169116146106e5576040516316343f1760e31b81526001600160a01b038084166004830152841660248201526044016102ac565b80608001511561070c5784846040516350943b5760e11b81526004016102ac9291906111ae565b505b600354604051632bafb2c760e21b8152600481018a905289916001600160a01b03169063aebecb1c906024016000604051808303816000875af1158015610759573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107819190810190611260565b5060008c815260046020526040902061079b888a8361137d565b5042600460008e8152602001908152602001600020600101600001819055507f61a38b1ae2b65567a5f16692367ae7ac5760505f17b3b6e83e306795b9a83ffc8c8f6040516107fd9291909182526001600160a01b0316602082015260400190565b60405180910390a15050505050505050505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061089c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108906000805160206114a9833981519152546001600160a01b031690565b6001600160a01b031614155b156108ba5760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b15801561090757600080fd5b505afa15801561091b573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561097c575060408051601f3d908101601f191682019092526109799181019061143c565b60015b6109a457604051634c9c8ce360e01b81526001600160a01b03831660048201526024016102ac565b6000805160206114a983398151915281146109d557604051632a87526960e21b8152600481018290526024016102ac565b6109df8383610a87565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ba5760405163703e46dd60e11b815260040160405180910390fd5b610a35610add565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610a6384611455565b6001600160e01b031984811691161491505092915050565b60208101815182018082fd5b610a9082610b26565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610ad5576109df8282610b8b565b610252610c01565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108ba57604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b600003610b5c57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016102ac565b6000805160206114a983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610ba8919061148c565b600060405180830381855af49150503d8060008114610be3576040519150601f19603f3d011682016040523d82523d6000602084013e610be8565b606091505b5091509150610bf8858383610c20565b95945050505050565b34156108ba5760405163b398979f60e01b815260040160405180910390fd5b606082610c3557610c3082610c7f565b610c78565b8151158015610c4c57506001600160a01b0384163b155b15610c7557604051639996b31560e01b81526001600160a01b03851660048201526024016102ac565b50805b9392505050565b805115610c8f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b604051806040016040528060608152602001610cd36040518060200160405280600081525090565b905290565b6001600160a01b0381168114610ca857600080fd5b60008083601f840112610cff57600080fd5b5081356001600160401b03811115610d1657600080fd5b602083019150836020828501011115610d2e57600080fd5b9250929050565b6000806000806000806000806000806101008b8d031215610d5557600080fd5b8a35610d6081610cd8565b995060208b013560ff81168114610d7657600080fd5b985060408b0135975060608b0135965060808b0135955060a08b01356001600160401b0380821115610da757600080fd5b610db38e838f01610ced565b909750955060c08d0135945060e08d0135915080821115610dd357600080fd5b50610de08d828e01610ced565b915080935050809150509295989b9194979a5092959850565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715610e3157610e31610df9565b60405290565b604051602081016001600160401b0381118282101715610e3157610e31610df9565b604051601f8201601f191681016001600160401b0381118282101715610e8157610e81610df9565b604052919050565b60006001600160401b03821115610ea257610ea2610df9565b50601f01601f191660200190565b60008060408385031215610ec357600080fd5b8235610ece81610cd8565b915060208301356001600160401b03811115610ee957600080fd5b8301601f81018513610efa57600080fd5b8035610f0d610f0882610e89565b610e59565b818152866020838501011115610f2257600080fd5b816020840160208301376000602083830101528093505050509250929050565b600060208284031215610f5457600080fd5b5035919050565b60005b83811015610f76578181015183820152602001610f5e565b50506000910152565b60008151808452610f97816020860160208601610f5b565b601f01601f19169290920160200192915050565b602081526000825160406020840152610fc76060840182610f7f565b905060208401515160408401528091505092915050565b602081526000610c786020830184610f7f565b600080600080600080600060a0888a03121561100c57600080fd5b873561101781610cd8565b96506020880135955060408801356001600160401b038082111561103a57600080fd5b6110468b838c01610ced565b909750955060608a0135945060808a013591508082111561106657600080fd5b506110738a828b01610ced565b989b979a50959850939692959293505050565b6000806000806080858703121561109c57600080fd5b84356110a781610cd8565b935060208501356110b781610cd8565b925060408501356110c781610cd8565b915060608501356110d781610cd8565b939692955090935050565b6001600160f81b03198b811682528a1660018201526bffffffffffffffffffffffff1960608a811b8216600284015289901b1660168201527f63726561746543726564656e7469616c446566696e6974696f6e000000000000602a82015260448101879052600085876064840137858201856064820152838560848301376000930160840192835250909a9950505050505050505050565b600181811c9082168061118e57607f821691505b60208210810361037757634e487b7160e01b600052602260045260246000fd5b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060a082840312156111ef57600080fd5b60405160a081018181106001600160401b038211171561121157611211610df9565b604052825161121f81610cd8565b808252506020830151602082015260408301516040820152606083015160608201526080830151801515811461125457600080fd5b60808201529392505050565b6000602080838503121561127357600080fd5b82516001600160401b038082111561128a57600080fd5b90840190818603604081121561129f57600080fd5b6112a7610e0f565b8351838111156112b657600080fd5b84019250601f830188136112c957600080fd5b82516112d7610f0882610e89565b81815289878387010111156112eb57600080fd5b6112fa82888301898801610f5b565b825250601f19820185131561130e57600080fd5b611316610e37565b938501518452938401929092525090949350505050565b601f8211156109df576000816000526020600020601f850160051c810160208610156113565750805b601f850160051c820191505b8181101561137557828155600101611362565b505050505050565b6001600160401b0383111561139457611394610df9565b6113a8836113a2835461117a565b8361132d565b6000601f8411600181146113dc57600085156113c45750838201355b600019600387901b1c1916600186901b17835561091b565b600083815260209020601f19861690835b8281101561140d57868501358255602094850194600190920191016113ed565b508682101561142a5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60006020828403121561144e57600080fd5b5051919050565b805160208201516001600160e01b031980821692919060048310156114845780818460040360031b1b83161693505b505050919050565b6000825161149e818460208701610f5b565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209ac2115acd101f13fa3e2341ea45d9168779ac5a4311acb1e8f74c2de7ba058c64736f6c63430008170033" + "code": "0x6080604052600436106100705760003560e01c80639f889db51161004e5780639f889db5146100d2578063ad3cb1cc146100ff578063b6c409751461013d578063f8c8765e1461015d57600080fd5b80631108cd7b146100755780634f1ef2861461009757806352d1902d146100aa575b600080fd5b34801561008157600080fd5b50610095610090366004610d35565b61017d565b005b6100956100a5366004610eb0565b610237565b3480156100b657600080fd5b506100bf610256565b6040519081526020015b60405180910390f35b3480156100de57600080fd5b506100f26100ed366004610f42565b610273565b6040516100c99190610fab565b34801561010b57600080fd5b50610130604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100c99190610fde565b34801561014957600080fd5b50610095610158366004610ff1565b61037d565b34801561016957600080fd5b50610095610178366004611086565b610396565b6040516000906101a790601960f81b90839030908f908c908c908c908c908c908c906020016110e2565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8d1691830191909152606082018b9052608082018a9052915061022a908c9060019060a0016020604051602081039080840390855afa158015610215573d6000803e3d6000fd5b505050602060405103518989898989896104b8565b5050505050505050505050565b61023f610815565b610248826108bc565b6102528282610922565b5050565b60006102606109e4565b506000805160206114a983398151915290565b61027b610cab565b6000828152600460205260408120600101548391036102b557604051634f4e6fe360e11b8152600481018290526024015b60405180910390fd5b6000838152600460205260409081902081518083019092528054829082906102dc9061117a565b80601f01602080910402602001604051908101604052809291908181526020018280546103089061117a565b80156103555780601f1061032a57610100808354040283529160200191610355565b820191906000526020600020905b81548152906001019060200180831161033857829003601f168201915b5050509183525050604080516020818101909252600193909301548352015291505b50919050565b61038d87338888888888886104b8565b50505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff16806103df575080546001600160401b03808416911610155b156103fd5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561042786610a2d565b600180546001600160a01b038781166001600160a01b031992831617909255600380548784169083161790556002805492861692909116919091179055805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b6002546040516301daf29b60e21b81523360048201526001600160a01b039091169063076bca6c9060240160006040518083038186803b1580156104fb57600080fd5b505afa15801561050f573d6000803e3d6000fd5b505050600087815260046020526040902060010154879150156105485760405163b1a7a2af60e01b8152600481018290526024016102ac565b85858a8a806001600160a01b0316826001600160a01b031614610591576040516316343f1760e31b81526001600160a01b038083166004830152831660248201526044016102ac565b6001546040516366874f2560e01b81526001600160a01b03909116906366874f25906105c390879087906004016111ae565b60a060405180830381865afa9250505080156105fc575060408051601f3d908101601f191682019092526105f9918101906111dd565b60015b6106a5573d80801561062a576040519150601f19603f3d011682016040523d82523d6000602084013e61062f565b606091505b506106418163431dc9ff60e11b610a57565b15610663578484604051634c92543b60e01b81526004016102ac9291906111ae565b61067481631859e3bb60e11b610a57565b1561069657848460405163046cb69560e21b81526004016102ac9291906111ae565b61069f81610a7b565b5061070e565b80516001600160a01b038481169116146106e5576040516316343f1760e31b81526001600160a01b038084166004830152841660248201526044016102ac565b80608001511561070c5784846040516350943b5760e11b81526004016102ac9291906111ae565b505b600354604051632bafb2c760e21b8152600481018a905289916001600160a01b03169063aebecb1c906024016000604051808303816000875af1158015610759573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107819190810190611260565b5060008c815260046020526040902061079b888a8361137d565b5042600460008e8152602001908152602001600020600101600001819055507f61a38b1ae2b65567a5f16692367ae7ac5760505f17b3b6e83e306795b9a83ffc8c8f6040516107fd9291909182526001600160a01b0316602082015260400190565b60405180910390a15050505050505050505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061089c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108906000805160206114a9833981519152546001600160a01b031690565b6001600160a01b031614155b156108ba5760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b15801561090757600080fd5b505afa15801561091b573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561097c575060408051601f3d908101601f191682019092526109799181019061143c565b60015b6109a457604051634c9c8ce360e01b81526001600160a01b03831660048201526024016102ac565b6000805160206114a983398151915281146109d557604051632a87526960e21b8152600481018290526024016102ac565b6109df8383610a87565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ba5760405163703e46dd60e11b815260040160405180910390fd5b610a35610add565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610a6384611455565b6001600160e01b031984811691161491505092915050565b60208101815182018082fd5b610a9082610b26565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610ad5576109df8282610b8b565b610252610c01565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108ba57604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b600003610b5c57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016102ac565b6000805160206114a983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610ba8919061148c565b600060405180830381855af49150503d8060008114610be3576040519150601f19603f3d011682016040523d82523d6000602084013e610be8565b606091505b5091509150610bf8858383610c20565b95945050505050565b34156108ba5760405163b398979f60e01b815260040160405180910390fd5b606082610c3557610c3082610c7f565b610c78565b8151158015610c4c57506001600160a01b0384163b155b15610c7557604051639996b31560e01b81526001600160a01b03851660048201526024016102ac565b50805b9392505050565b805115610c8f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b604051806040016040528060608152602001610cd36040518060200160405280600081525090565b905290565b6001600160a01b0381168114610ca857600080fd5b60008083601f840112610cff57600080fd5b5081356001600160401b03811115610d1657600080fd5b602083019150836020828501011115610d2e57600080fd5b9250929050565b6000806000806000806000806000806101008b8d031215610d5557600080fd5b8a35610d6081610cd8565b995060208b013560ff81168114610d7657600080fd5b985060408b0135975060608b0135965060808b0135955060a08b01356001600160401b0380821115610da757600080fd5b610db38e838f01610ced565b909750955060c08d0135945060e08d0135915080821115610dd357600080fd5b50610de08d828e01610ced565b915080935050809150509295989b9194979a5092959850565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715610e3157610e31610df9565b60405290565b604051602081016001600160401b0381118282101715610e3157610e31610df9565b604051601f8201601f191681016001600160401b0381118282101715610e8157610e81610df9565b604052919050565b60006001600160401b03821115610ea257610ea2610df9565b50601f01601f191660200190565b60008060408385031215610ec357600080fd5b8235610ece81610cd8565b915060208301356001600160401b03811115610ee957600080fd5b8301601f81018513610efa57600080fd5b8035610f0d610f0882610e89565b610e59565b818152866020838501011115610f2257600080fd5b816020840160208301376000602083830101528093505050509250929050565b600060208284031215610f5457600080fd5b5035919050565b60005b83811015610f76578181015183820152602001610f5e565b50506000910152565b60008151808452610f97816020860160208601610f5b565b601f01601f19169290920160200192915050565b602081526000825160406020840152610fc76060840182610f7f565b905060208401515160408401528091505092915050565b602081526000610c786020830184610f7f565b600080600080600080600060a0888a03121561100c57600080fd5b873561101781610cd8565b96506020880135955060408801356001600160401b038082111561103a57600080fd5b6110468b838c01610ced565b909750955060608a0135945060808a013591508082111561106657600080fd5b506110738a828b01610ced565b989b979a50959850939692959293505050565b6000806000806080858703121561109c57600080fd5b84356110a781610cd8565b935060208501356110b781610cd8565b925060408501356110c781610cd8565b915060608501356110d781610cd8565b939692955090935050565b6001600160f81b03198b811682528a1660018201526bffffffffffffffffffffffff1960608a811b8216600284015289901b1660168201527f63726561746543726564656e7469616c446566696e6974696f6e000000000000602a82015260448101879052600085876064840137858201856064820152838560848301376000930160840192835250909a9950505050505050505050565b600181811c9082168061118e57607f821691505b60208210810361037757634e487b7160e01b600052602260045260246000fd5b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060a082840312156111ef57600080fd5b60405160a081018181106001600160401b038211171561121157611211610df9565b604052825161121f81610cd8565b808252506020830151602082015260408301516040820152606083015160608201526080830151801515811461125457600080fd5b60808201529392505050565b6000602080838503121561127357600080fd5b82516001600160401b038082111561128a57600080fd5b90840190818603604081121561129f57600080fd5b6112a7610e0f565b8351838111156112b657600080fd5b84019250601f830188136112c957600080fd5b82516112d7610f0882610e89565b81815289878387010111156112eb57600080fd5b6112fa82888301898801610f5b565b825250601f19820185131561130e57600080fd5b611316610e37565b938501518452938401929092525090949350505050565b601f8211156109df576000816000526020600020601f850160051c810160208610156113565750805b601f850160051c820191505b8181101561137557828155600101611362565b505050505050565b6001600160401b0383111561139457611394610df9565b6113a8836113a2835461117a565b8361132d565b6000601f8411600181146113dc57600085156113c45750838201355b600019600387901b1c1916600186901b17835561091b565b600083815260209020601f19861690835b8281101561140d57868501358255602094850194600190920191016113ed565b508682101561142a5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60006020828403121561144e57600080fd5b5051919050565b805160208201516001600160e01b031980821692919060048310156114845780818460040360031b1b83161693505b505050919050565b6000825161149e818460208701610f5b565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212202027dbb0d3362a6e014cc9423c8d958e531893157fcc9ac44671bfb5ca9c3cfd64736f6c63430008170033" }, "0x0000000000000000000000000000000000017777": { "comment": "Proxy: Smart contract to store mapping of legacy identifiers to new one", @@ -226,12 +226,12 @@ "0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000019999", "0000000000000000000000000000000000000000000000000000000000000002": "0x0000000000000000000000000000000000000000000000000000000000006666", "f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00": "0x0000000000000000000000000000000000000000000000000000000000000001", - "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000eef1c6eb20009bd29be8a4349a056a98805e37d5" + "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000a6d35f8e0f5f9790c4ca1cd875a3c323258336cb" } }, - "0xeef1c6eb20009bd29be8a4349a056a98805e37d5": { + "0xa6d35f8e0f5f9790c4ca1cd875a3c323258336cb": { "comment": "Implementation: Smart contract to store mapping of legacy identifiers to new one", - "code": "0x6080604052600436106100915760003560e01c80639a3265d9116100595780639a3265d914610140578063ad3cb1cc14610160578063c0c53b8b14610191578063c612ab58146101b1578063d924aedb146101d157600080fd5b80634f1ef2861461009657806352d1902d146100ab57806353aac465146100d35780637223460a146100f357806393a8c74214610113575b600080fd5b6100a96100a4366004612326565b6101f1565b005b3480156100b757600080fd5b506100c0610210565b6040519081526020015b60405180910390f35b3480156100df57600080fd5b506100a96100ee3660046123d9565b61022d565b3480156100ff57600080fd5b506100a961010e3660046124b7565b6102ee565b34801561011f57600080fd5b5061013361012e366004612587565b6103a8565b6040516100ca919061261f565b34801561014c57600080fd5b506100a961015b366004612632565b61044d565b34801561016c57600080fd5b50610133604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561019d57600080fd5b506100a96101ac3660046126e5565b610468565b3480156101bd57600080fd5b506101336101cc366004612587565b61057c565b3480156101dd57600080fd5b506100a96101ec366004612728565b6105a0565b6101f96105b9565b61020282610660565b61020c82826106c6565b5050565b600061021a61078d565b50600080516020612c4f83398151915290565b6000601960f81b600060f81b308e8b8b8b8b8b8b8b60405160200161025c9b9a999897969594939291906127d2565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8e1691830191909152606082018c9052608082018b905291506102e0908d9060019060a0016020604051602081039080840390855afa1580156102ca573d6000803e3d6000fd5b505050602060405103518a8a8a8a8a8a8a6107d6565b505050505050505050505050565b60405160009061031890601960f81b90839030908f908c908c908c908c908c908c90602001612864565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8d1691830191909152606082018b9052608082018a9052915061039b908c9060019060a0016020604051602081039080840390855afa158015610386573d6000803e3d6000fd5b50505060206040510351898989898989610ad5565b5050505050505050505050565b8051602081830181018051600382529282019190930120915280546103cc906128fa565b80601f01602080910402602001604051908101604052809291908181526020018280546103f8906128fa565b80156104455780601f1061041a57610100808354040283529160200191610445565b820191906000526020600020905b81548152906001019060200180831161042857829003601f168201915b505050505081565b61045e8833898989898989896107d6565b5050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff16806104b1575080546001600160401b03808416911610155b156104cf5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556104f985610e0e565b600180546001600160a01b038681166001600160a01b0319928316179092556002805492861692909116919091179055805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b8051602081830181018051600482529282019190930120915280546103cc906128fa565b6105b08733888888888888610ad5565b50505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061064057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610634600080516020612c4f833981519152546001600160a01b031690565b6001600160a01b031614155b1561065e5760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b1580156106ab57600080fd5b505afa1580156106bf573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610720575060408051601f3d908101601f1916820190925261071d9181019061292e565b60015b61074d57604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b600080516020612c4f833981519152811461077e57604051632a87526960e21b815260048101829052602401610744565b6107888383610e38565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461065e5760405163703e46dd60e11b815260040160405180910390fd5b8888806001600160a01b0316826001600160a01b03161461081d576040516316343f1760e31b81526001600160a01b03808316600483015283166024820152604401610744565b6002546040516301daf29b60e21b81523360048201526001600160a01b039091169063076bca6c9060240160006040518083038186803b15801561086057600080fd5b505afa158015610874573d6000803e3d6000fd5b5050505061093961092c60038b8b604051610890929190612947565b908152602001604051809103902080546108a9906128fa565b80601f01602080910402602001604051908101604052809291908181526020018280546108d5906128fa565b80156109225780601f106108f757610100808354040283529160200191610922565b820191906000526020600020905b81548152906001019060200180831161090557829003601f168201915b5050505050610e8e565b6001600160801b03161590565b61095a578888604051630ab7bdc760e21b8152600401610744929190612980565b846001600160801b0319166109a48a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e9f92505050565b6109ad90612994565b6001600160801b031916146109db57848989604051630876c99d60e21b8152600401610744939291906129cb565b610a26610a1d88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610eaa92505050565b60200151610ff5565b6001600160a01b03168b6001600160a01b031614610a5b578686604051631859e3bb60e11b8152600401610744929190612980565b868660038b8b604051610a6f929190612947565b90815260200160405180910390209182610a8a929190612a35565b507ff214be33ffacf63cd5f2d1636bef433e47c400b94d565c786049bfa836c20e1989898989604051610ac09493929190612af4565b60405180910390a15050505050505050505050565b8787806001600160a01b0316826001600160a01b031614610b1c576040516316343f1760e31b81526001600160a01b03808316600483015283166024820152604401610744565b6002546040516301daf29b60e21b81523360048201526001600160a01b039091169063076bca6c9060240160006040518083038186803b158015610b5f57600080fd5b505afa158015610b73573d6000803e3d6000fd5b5050505060048686604051610b89929190612947565b90815260200160405180910390208054610ba2906128fa565b159050610bc65785856040516327ef3c3d60e01b8152600401610744929190612980565b610bde61092c60038a8a604051610890929190612947565b15610c0057858560405163a54e9cfb60e01b8152600401610744929190612980565b6000610cb6610a1d60038b8b604051610c1a929190612947565b90815260200160405180910390208054610c33906128fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5f906128fa565b8015610cac5780601f10610c8157610100808354040283529160200191610cac565b820191906000526020600020905b815481529060010190602001808311610c8f57829003601f168201915b5050505050610eaa565b9050806001600160a01b03168b6001600160a01b031614610cfd576040516316343f1760e31b81526001600160a01b03808d16600483015282166024820152604401610744565b610d84610d3f8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e8e92505050565b610d7e89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e8e92505050565b9061102e565b610da95786868a8a60405163998f70a160e01b81526004016107449493929190612af4565b848460048989604051610dbd929190612947565b90815260200160405180910390209182610dd8929190612a35565b507f87526cc0385862de920bf8b05560b5c9eb58f8af45be9f917801198166655f8887878787604051610ac09493929190612af4565b610e16611041565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b610e418261108a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610e865761078882826110ef565b61020c611165565b6000610e9982611184565b92915050565b6060610e9982611198565b60408051808201909152606080825260208201526000610ec983610e8e565b90506000610eef604051806040016040528060018152602001601d60f91b815250610e8e565b9050600080610efe84846114be565b955092509050801580610f3c5750610f3a610f3360405180604001604052806003815260200162191a5960ea1b815250610e8e565b839061150c565b155b15610f5c5785604051631859e3bb60e11b8152600401610744919061261f565b610f6684846114be565b95509250905080610f8c5785604051631859e3bb60e11b8152600401610744919061261f565b6040805180820190915260608082526020820152610fa983611518565b81526040805180820190915260018152601d60f91b6020820152610fd790610fd090610e8e565b8690611523565b9450610fe69150849050611518565b60208201529695505050505050565b60006016611001835190565b0361100e57506000919050565b60006110198361154d565b905061102481612b26565b60601c9392505050565b600061103a838361173f565b9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661065e57604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b6000036110c057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610744565b600080516020612c4f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161110c9190612b59565b600060405180830381855af49150503d8060008114611147576040519150601f19603f3d011682016040523d82523d6000602084013e61114c565b606091505b509150915061115c858383611757565b95945050505050565b341561065e5760405163b398979f60e01b815260040160405180910390fd5b60008060208301905061103a8184516117b3565b80516060906031906000805b82811080156111cb5750838682815181106111c1576111c1612b75565b016020015160f81c145b156111dc57600191820191016111a4565b5060008080806117e361209f8702046001016002026001600160401b038111156112085761120861229b565b6040519080825280601f01601f191660200182016040528015611232576020820181803683370190505b5090506000600460038801046001600160401b038111156112555761125561229b565b60405190808252806020026020018201604052801561127e578160200160208202803683370190505b50905060005b8a5181101561137c5760008b82815181106112a1576112a1612b75565b602001015160f81c60f81b90506112d06040518060600160405280603a8152602001612c8f603a9139826117bf565b9096509450846112f5578b604051634cb9e47360e11b8152600401610744919061261f565b8251600019015b60008112611372578684828151811061131757611317612b75565b602002602001015163ffffffff16603a026001600160401b0316019750602088901c96508763ffffffff1684828151811061135457611354612b75565b63ffffffff90921660209283029190910190910152600019016112fc565b5050600101611284565b50600860038816026001600160401b038116600003611399575060205b600719016000805b8351811015611443575b6020836001600160401b0316101561143757826001600160401b03168482815181106113d9576113d9612b75565b602002602001015163ffffffff16901c60f81b8583815181106113fe576113fe612b75565b60200101906001600160f81b031916908160001a90535060019091019060086001600160401b03841610611437576008830392506113ab565b601892506001016113a1565b50875b84518110156114a157600060f81b85828151811061146657611466612b75565b01602001516001600160f81b031916111561149957611488858a830384611822565b9d9c50505050505050505050505050565b600101611446565b506114ae84600083611822565b9c9b505050505050505050505050565b60008080806114cd86866118d3565b905060001981036114e957600086600093509350935050611505565b6114fd86826001600160801b0388166119de565b935093509350505b9250925092565b600061103a8383611a4b565b6060610e9982611a95565b60008080806115328686611b0c565b905060001981036114e9576000808793509350935050611505565b6060600061155a83610e8e565b9050600061158160405180604001604052806002815260200161060f60f31b815250610e8e565b90506115b06115a960405180604001604052806002815260200161060f60f31b815250610e8e565b8390611bfe565b6115cb57505060408051602081019091526000815292915050565b6115dd6115d88383611c0a565b611518565b935060008490506000600282516115f49190612ba1565b6001600160401b0381111561160b5761160b61229b565b6040519080825280601f01601f191660200182016040528015611635576020820181803683370190505b50905060005b81518110156117355760008061167a85611656856002612bc3565b8151811061166657611666612b75565b01602001516001600160f81b031916611c16565b915091508061169f575050604080516020810190915260008152979650505050505050565b6000806116bc876116b1876002612bc3565b611656906001612bda565b91509150806116e35750506040805160208101909152600081529998505050505050505050565b816116ef856010612bed565b6116f99190612c09565b60f81b86868151811061170e5761170e612b75565b60200101906001600160f81b031916908160001a905350506001909301925061163b915050565b5095945050505050565b600060001961174e84846118d3565b14159392505050565b60608261176c5761176782611cfc565b61103a565b815115801561178357506001600160a01b0384163b155b156117ac57604051639996b31560e01b81526001600160a01b0385166004820152602401610744565b5092915050565b600061103a8383611d25565b60008060005b845181101561181257836001600160f81b0319168582815181106117eb576117eb612b75565b01602001516001600160f81b0319160361180a5791506001905061181b565b6001016117c5565b50600080915091505b9250929050565b606060008383036001600160401b038111156118405761184061229b565b6040519080825280601f01601f19166020018201604052801561186a576020820181803683370190505b50905060005b8484038110156118ca57858582018151811061188e5761188e612b75565b602001015160f81c60f81b8282815181106118ab576118ab612b75565b60200101906001600160f81b031916908160001a905350600101611870565b50949350505050565b60006001600160801b038381169083168083036118f557600092505050610e99565b81158061190157508181115b156119125760001992505050610e99565b600061191e8660801c90565b9050600061192c8660801c90565b9050600061193b825160001a90565b90505b600061194b848784611d31565b90506000198103611966576000199650505050505050610e99565b94859003949283019285851115611987576000199650505050505050610e99565b848320858520036119b35761199c8960801c90565b6119a69085612c22565b9650505050505050610e99565b856001036119cb576000199650505050505050610e99565b600019909501946001909301925061193e565b6000806000806119ee8760801c90565b90506001600160801b03871685870181811115611a1e576040516365f4e9df60e01b815260040160405180910390fd5b6001996001600160801b03988916608085811b919091179a50928290039098169201901b17949350505050565b60006001600160801b038381169083168114611a6b576000915050610e99565b611a8d611a788560801c90565b611a828560801c90565b839081902091201490565b949350505050565b60606001600160801b0382166001600160401b03811115611ab857611ab861229b565b6040519080825280601f01601f191660200182016040528015611ae2576020820181803683370190505b50905060208101611b0681611af78560801c90565b6001600160801b038616611df8565b50919050565b60006001600160801b03838116908316808303611b2e57600092505050610e99565b811580611b3a57508181115b15611b4b5760001992505050610e99565b6000611b578660801c90565b90506000611b658660801c90565b90506000611b7287611e06565b905060001984015b6000611b87858885611e4b565b90506000198103611ba357600019975050505050505050610e99565b80821115611bbc57600019975050505050505050610e99565b858420828203868101889020909103611bde579750610e999650505050505050565b8115611bec57509550611b7a565b60001998505050505050505050610e99565b600061103a8383611eff565b600061103a8383611f4c565b600080600360fc1b6001600160f81b0319841610801590611c455750603960f81b6001600160f81b0319841611155b15611c6357611c59603060f885901c612c35565b9360019350915050565b604160f81b6001600160f81b0319841610801590611c8f5750602360f91b6001600160f81b0319841611155b15611caf576041611ca560f885901c600a612c09565b611c599190612c35565b606160f81b6001600160f81b0319841610801590611cdb5750603360f91b6001600160f81b0319841611155b15611cf1576061611ca560f885901c600a612c09565b506000928392509050565b805115611d0c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b600061103a8383611fa6565b600060208311611d4d57611d4684848461200c565b905061103a565b83601f8416808503820160ff8516600080516020612c6f833981519152025b81881015611dae5787518118611d818161211d565b15611da257848903611d958a60208a61200c565b019550505050505061103a565b60208901985050611d6c565b82600003611dc45760001994505050505061103a565b611dcf82848861200c565b94506000198503611de85760001994505050505061103a565b838203850194505050505061103a565b8083828460045afa50505050565b60006001600160801b038216808203611e32576040516365f4e9df60e01b815260040160405180910390fd5b61103a60018203611e438560801c90565b015160001a90565b600060208311611e6057611d46848484612168565b601f83168484018115611e98578190036000611e7d828487612168565b90506000198114611e96579086900301915061103a9050565b505b60ff8416600080516020612c6f833981519152025b86821115611ef157601f1990910180519091908118611ecb8161211d565b15611eeb57878303611edf84602089612168565b0194505050505061103a565b50611ead565b506000199695505050505050565b60006001600160801b0383811690831680821015611f2257600092505050610e99565b8481831115611f3857611f3586836121b1565b90505b611f428186611a4b565b9695505050505050565b60006001600160801b0383811690831681811115611f6e578492505050610e99565b600080611f7b87846121fc565b9092509050611f8a8287611a4b565b15611f9a579350610e9992505050565b86945050505050610e99565b60006001600160801b03831115611fd05760405163fee7506f60e01b815260040160405180910390fd5b6001600160801b03821115611ff857604051633b6b098d60e01b815260040160405180910390fd5b506001600160801b031660809190911b1790565b825160009081602085111561202057602094505b601285106120aa5760ff8416600080516020612c6f8339815191520282186120506001600160801b03821761211d565b6000036120865760109150601a8610612081576120756001600160401b03821761211d565b60000361208157601891505b6120a4565b6120986001600160c01b03821761211d565b6000036120a457600891505b506120e8565b600a85106120e85760ff8416600080516020612c6f8339815191520282186120da6001600160c01b03821761211d565b6000036120e657600891505b505b848110156121105781811a60ff851681036121075750915061103a9050565b506001016120e8565b5060001995945050505050565b7ffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefeff81019019167f80808080808080808080808080808080808080808080808080808080808080801690565b6000602083111561217857602092505b83515b83156121a5576000199093019280841a60ff8416810361219f57849250505061103a565b5061217b565b50600019949350505050565b60006001600160801b038316808311156121de576040516365f4e9df60e01b815260040160405180910390fd5b611a8d6121eb8560801c90565b60801b6001600160801b0385161790565b600080600061220b8560801c90565b90506001600160801b03851680851115612238576040516365f4e9df60e01b815260040160405180910390fd5b608082901b6001600160801b038616176122726122558785612bda565b61225f8885612c22565b6001600160801b031660809190911b1790565b9350935050509250929050565b80356001600160a01b038116811461229657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b03808411156122cb576122cb61229b565b604051601f8501601f19908116603f011681019082821181831017156122f3576122f361229b565b8160405280935085815286868601111561230c57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561233957600080fd5b6123428361227f565b915060208301356001600160401b0381111561235d57600080fd5b8301601f8101851361236e57600080fd5b61237d858235602084016122b1565b9150509250929050565b803560ff8116811461229657600080fd5b60008083601f8401126123aa57600080fd5b5081356001600160401b038111156123c157600080fd5b60208301915083602082850101111561181b57600080fd5b60008060008060008060008060008060006101008c8e0312156123fb57600080fd5b6124048c61227f565b9a5061241260208d01612387565b995060408c0135985060608c013597506001600160401b038060808e0135111561243b57600080fd5b61244b8e60808f01358f01612398565b909850965060a08d013581101561246157600080fd5b6124718e60a08f01358f01612398565b909650945060c08d0135935060e08d013581101561248e57600080fd5b5061249f8d60e08e01358e01612398565b81935080925050509295989b509295989b9093969950565b60008060008060008060008060008060e08b8d0312156124d657600080fd5b6124df8b61227f565b99506124ed60208c01612387565b985060408b0135975060608b0135965060808b01356001600160401b038082111561251757600080fd5b6125238e838f01612398565b909850965060a08d013591508082111561253c57600080fd5b6125488e838f01612398565b909650945060c08d013591508082111561256157600080fd5b5061256e8d828e01612398565b915080935050809150509295989b9194979a5092959850565b60006020828403121561259957600080fd5b81356001600160401b038111156125af57600080fd5b8201601f810184136125c057600080fd5b611a8d848235602084016122b1565b60005b838110156125ea5781810151838201526020016125d2565b50506000910152565b6000815180845261260b8160208601602086016125cf565b601f01601f19169290920160200192915050565b60208152600061103a60208301846125f3565b60008060008060008060008060a0898b03121561264e57600080fd5b6126578961227f565b975060208901356001600160401b038082111561267357600080fd5b61267f8c838d01612398565b909950975060408b013591508082111561269857600080fd5b6126a48c838d01612398565b909750955060608b0135945060808b01359150808211156126c457600080fd5b506126d18b828c01612398565b999c989b5096995094979396929594505050565b6000806000606084860312156126fa57600080fd5b6127038461227f565b92506127116020850161227f565b915061271f6040850161227f565b90509250925092565b60008060008060008060006080888a03121561274357600080fd5b61274c8861227f565b965060208801356001600160401b038082111561276857600080fd5b6127748b838c01612398565b909850965060408a013591508082111561278d57600080fd5b6127998b838c01612398565b909650945060608a01359150808211156127b257600080fd5b506127bf8a828b01612398565b989b979a50959850939692959293505050565b6001600160f81b03198c811682528b1660018201526001600160601b031960608b811b821660028401528a901b1660168201526f6372656174654469644d617070696e6760801b602a82015260008789603a840137878201603a8101600081528789823750868101905085603a8201528385605a83013760009301605a0192835250909b9a5050505050505050505050565b6001600160f81b03198b811682528a1660018201526001600160601b031960608a811b8216600284015289901b166016820152746372656174655265736f757263654d617070696e6760581b602a82015260008688603f840137868201603f81016000815286888237508581019050603f810160008152848682375060009301603f0192835250909a9950505050505050505050565b600181811c9082168061290e57607f821691505b602082108103611b0657634e487b7160e01b600052602260045260246000fd5b60006020828403121561294057600080fd5b5051919050565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000611a8d602083018486612957565b805160208201516001600160801b031980821692919060108310156129c35780818460100360031b1b83161693505b505050919050565b83815260406020820152600061115c604083018486612957565b601f821115610788576000816000526020600020601f850160051c81016020861015612a0e5750805b601f850160051c820191505b81811015612a2d57828155600101612a1a565b505050505050565b6001600160401b03831115612a4c57612a4c61229b565b612a6083612a5a83546128fa565b836129e5565b6000601f841160018114612a945760008515612a7c5750838201355b600019600387901b1c1916600186901b1783556106bf565b600083815260209020601f19861690835b82811015612ac55786850135825560209485019460019092019101612aa5565b5086821015612ae25760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081526000612b08604083018688612957565b8281036020840152612b1b818587612957565b979650505050505050565b805160208201516001600160601b031980821692919060148310156129c35760149290920360031b82901b161692915050565b60008251612b6b8184602087016125cf565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612bbe57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610e9957610e99612b8b565b80820180821115610e9957610e99612b8b565b60ff81811683821602908116908181146117ac576117ac612b8b565b60ff8181168382160190811115610e9957610e99612b8b565b81810381811115610e9957610e99612b8b565b60ff8281168282160390811115610e9957610e99612b8b56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc010101010101010101010101010101010101010101010101010101010101010131323334353637383941424344454647484a4b4c4d4e505152535455565758595a6162636465666768696a6b6d6e6f707172737475767778797aa2646970667358221220a1a77c06017df881782bb0eed54642eef1257622f07541acbf4f3fdc02dd06d064736f6c63430008170033" + "code": "0x6080604052600436106100915760003560e01c80639a3265d9116100595780639a3265d914610140578063ad3cb1cc14610160578063c0c53b8b14610191578063c612ab58146101b1578063d924aedb146101d157600080fd5b80634f1ef2861461009657806352d1902d146100ab57806353aac465146100d35780637223460a146100f357806393a8c74214610113575b600080fd5b6100a96100a4366004612326565b6101f1565b005b3480156100b757600080fd5b506100c0610210565b6040519081526020015b60405180910390f35b3480156100df57600080fd5b506100a96100ee3660046123d9565b61022d565b3480156100ff57600080fd5b506100a961010e3660046124b7565b6102ee565b34801561011f57600080fd5b5061013361012e366004612587565b6103a8565b6040516100ca919061261f565b34801561014c57600080fd5b506100a961015b366004612632565b61044d565b34801561016c57600080fd5b50610133604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561019d57600080fd5b506100a96101ac3660046126e5565b610468565b3480156101bd57600080fd5b506101336101cc366004612587565b61057c565b3480156101dd57600080fd5b506100a96101ec366004612728565b6105a0565b6101f96105b9565b61020282610660565b61020c82826106c6565b5050565b600061021a61078d565b50600080516020612c4f83398151915290565b6000601960f81b600060f81b308e8b8b8b8b8b8b8b60405160200161025c9b9a999897969594939291906127d2565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8e1691830191909152606082018c9052608082018b905291506102e0908d9060019060a0016020604051602081039080840390855afa1580156102ca573d6000803e3d6000fd5b505050602060405103518a8a8a8a8a8a8a6107d6565b505050505050505050505050565b60405160009061031890601960f81b90839030908f908c908c908c908c908c908c90602001612864565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8d1691830191909152606082018b9052608082018a9052915061039b908c9060019060a0016020604051602081039080840390855afa158015610386573d6000803e3d6000fd5b50505060206040510351898989898989610ad5565b5050505050505050505050565b8051602081830181018051600382529282019190930120915280546103cc906128fa565b80601f01602080910402602001604051908101604052809291908181526020018280546103f8906128fa565b80156104455780601f1061041a57610100808354040283529160200191610445565b820191906000526020600020905b81548152906001019060200180831161042857829003601f168201915b505050505081565b61045e8833898989898989896107d6565b5050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff16806104b1575080546001600160401b03808416911610155b156104cf5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556104f985610e0e565b600180546001600160a01b038681166001600160a01b0319928316179092556002805492861692909116919091179055805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b8051602081830181018051600482529282019190930120915280546103cc906128fa565b6105b08733888888888888610ad5565b50505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061064057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610634600080516020612c4f833981519152546001600160a01b031690565b6001600160a01b031614155b1561065e5760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b1580156106ab57600080fd5b505afa1580156106bf573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610720575060408051601f3d908101601f1916820190925261071d9181019061292e565b60015b61074d57604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b600080516020612c4f833981519152811461077e57604051632a87526960e21b815260048101829052602401610744565b6107888383610e38565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461065e5760405163703e46dd60e11b815260040160405180910390fd5b8888806001600160a01b0316826001600160a01b03161461081d576040516316343f1760e31b81526001600160a01b03808316600483015283166024820152604401610744565b6002546040516301daf29b60e21b81523360048201526001600160a01b039091169063076bca6c9060240160006040518083038186803b15801561086057600080fd5b505afa158015610874573d6000803e3d6000fd5b5050505061093961092c60038b8b604051610890929190612947565b908152602001604051809103902080546108a9906128fa565b80601f01602080910402602001604051908101604052809291908181526020018280546108d5906128fa565b80156109225780601f106108f757610100808354040283529160200191610922565b820191906000526020600020905b81548152906001019060200180831161090557829003601f168201915b5050505050610e8e565b6001600160801b03161590565b61095a578888604051630ab7bdc760e21b8152600401610744929190612980565b846001600160801b0319166109a48a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e9f92505050565b6109ad90612994565b6001600160801b031916146109db57848989604051630876c99d60e21b8152600401610744939291906129cb565b610a26610a1d88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610eaa92505050565b60200151610ff5565b6001600160a01b03168b6001600160a01b031614610a5b578686604051631859e3bb60e11b8152600401610744929190612980565b868660038b8b604051610a6f929190612947565b90815260200160405180910390209182610a8a929190612a35565b507ff214be33ffacf63cd5f2d1636bef433e47c400b94d565c786049bfa836c20e1989898989604051610ac09493929190612af4565b60405180910390a15050505050505050505050565b8787806001600160a01b0316826001600160a01b031614610b1c576040516316343f1760e31b81526001600160a01b03808316600483015283166024820152604401610744565b6002546040516301daf29b60e21b81523360048201526001600160a01b039091169063076bca6c9060240160006040518083038186803b158015610b5f57600080fd5b505afa158015610b73573d6000803e3d6000fd5b5050505060048686604051610b89929190612947565b90815260200160405180910390208054610ba2906128fa565b159050610bc65785856040516327ef3c3d60e01b8152600401610744929190612980565b610bde61092c60038a8a604051610890929190612947565b15610c0057858560405163a54e9cfb60e01b8152600401610744929190612980565b6000610cb6610a1d60038b8b604051610c1a929190612947565b90815260200160405180910390208054610c33906128fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5f906128fa565b8015610cac5780601f10610c8157610100808354040283529160200191610cac565b820191906000526020600020905b815481529060010190602001808311610c8f57829003601f168201915b5050505050610eaa565b9050806001600160a01b03168b6001600160a01b031614610cfd576040516316343f1760e31b81526001600160a01b03808d16600483015282166024820152604401610744565b610d84610d3f8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e8e92505050565b610d7e89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e8e92505050565b9061102e565b610da95786868a8a60405163998f70a160e01b81526004016107449493929190612af4565b848460048989604051610dbd929190612947565b90815260200160405180910390209182610dd8929190612a35565b507f87526cc0385862de920bf8b05560b5c9eb58f8af45be9f917801198166655f8887878787604051610ac09493929190612af4565b610e16611041565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b610e418261108a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610e865761078882826110ef565b61020c611165565b6000610e9982611184565b92915050565b6060610e9982611198565b60408051808201909152606080825260208201526000610ec983610e8e565b90506000610eef604051806040016040528060018152602001601d60f91b815250610e8e565b9050600080610efe84846114be565b955092509050801580610f3c5750610f3a610f3360405180604001604052806003815260200162191a5960ea1b815250610e8e565b839061150c565b155b15610f5c5785604051631859e3bb60e11b8152600401610744919061261f565b610f6684846114be565b95509250905080610f8c5785604051631859e3bb60e11b8152600401610744919061261f565b6040805180820190915260608082526020820152610fa983611518565b81526040805180820190915260018152601d60f91b6020820152610fd790610fd090610e8e565b8690611523565b9450610fe69150849050611518565b60208201529695505050505050565b60006016611001835190565b0361100e57506000919050565b60006110198361154d565b905061102481612b26565b60601c9392505050565b600061103a838361173f565b9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661065e57604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b6000036110c057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610744565b600080516020612c4f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161110c9190612b59565b600060405180830381855af49150503d8060008114611147576040519150601f19603f3d011682016040523d82523d6000602084013e61114c565b606091505b509150915061115c858383611757565b95945050505050565b341561065e5760405163b398979f60e01b815260040160405180910390fd5b60008060208301905061103a8184516117b3565b80516060906031906000805b82811080156111cb5750838682815181106111c1576111c1612b75565b016020015160f81c145b156111dc57600191820191016111a4565b5060008080806117e361209f8702046001016002026001600160401b038111156112085761120861229b565b6040519080825280601f01601f191660200182016040528015611232576020820181803683370190505b5090506000600460038801046001600160401b038111156112555761125561229b565b60405190808252806020026020018201604052801561127e578160200160208202803683370190505b50905060005b8a5181101561137c5760008b82815181106112a1576112a1612b75565b602001015160f81c60f81b90506112d06040518060600160405280603a8152602001612c8f603a9139826117bf565b9096509450846112f5578b604051634cb9e47360e11b8152600401610744919061261f565b8251600019015b60008112611372578684828151811061131757611317612b75565b602002602001015163ffffffff16603a026001600160401b0316019750602088901c96508763ffffffff1684828151811061135457611354612b75565b63ffffffff90921660209283029190910190910152600019016112fc565b5050600101611284565b50600860038816026001600160401b038116600003611399575060205b600719016000805b8351811015611443575b6020836001600160401b0316101561143757826001600160401b03168482815181106113d9576113d9612b75565b602002602001015163ffffffff16901c60f81b8583815181106113fe576113fe612b75565b60200101906001600160f81b031916908160001a90535060019091019060086001600160401b03841610611437576008830392506113ab565b601892506001016113a1565b50875b84518110156114a157600060f81b85828151811061146657611466612b75565b01602001516001600160f81b031916111561149957611488858a830384611822565b9d9c50505050505050505050505050565b600101611446565b506114ae84600083611822565b9c9b505050505050505050505050565b60008080806114cd86866118d3565b905060001981036114e957600086600093509350935050611505565b6114fd86826001600160801b0388166119de565b935093509350505b9250925092565b600061103a8383611a4b565b6060610e9982611a95565b60008080806115328686611b0c565b905060001981036114e9576000808793509350935050611505565b6060600061155a83610e8e565b9050600061158160405180604001604052806002815260200161060f60f31b815250610e8e565b90506115b06115a960405180604001604052806002815260200161060f60f31b815250610e8e565b8390611bfe565b6115cb57505060408051602081019091526000815292915050565b6115dd6115d88383611c0a565b611518565b935060008490506000600282516115f49190612ba1565b6001600160401b0381111561160b5761160b61229b565b6040519080825280601f01601f191660200182016040528015611635576020820181803683370190505b50905060005b81518110156117355760008061167a85611656856002612bc3565b8151811061166657611666612b75565b01602001516001600160f81b031916611c16565b915091508061169f575050604080516020810190915260008152979650505050505050565b6000806116bc876116b1876002612bc3565b611656906001612bda565b91509150806116e35750506040805160208101909152600081529998505050505050505050565b816116ef856010612bed565b6116f99190612c09565b60f81b86868151811061170e5761170e612b75565b60200101906001600160f81b031916908160001a905350506001909301925061163b915050565b5095945050505050565b600060001961174e84846118d3565b14159392505050565b60608261176c5761176782611cfc565b61103a565b815115801561178357506001600160a01b0384163b155b156117ac57604051639996b31560e01b81526001600160a01b0385166004820152602401610744565b5092915050565b600061103a8383611d25565b60008060005b845181101561181257836001600160f81b0319168582815181106117eb576117eb612b75565b01602001516001600160f81b0319160361180a5791506001905061181b565b6001016117c5565b50600080915091505b9250929050565b606060008383036001600160401b038111156118405761184061229b565b6040519080825280601f01601f19166020018201604052801561186a576020820181803683370190505b50905060005b8484038110156118ca57858582018151811061188e5761188e612b75565b602001015160f81c60f81b8282815181106118ab576118ab612b75565b60200101906001600160f81b031916908160001a905350600101611870565b50949350505050565b60006001600160801b038381169083168083036118f557600092505050610e99565b81158061190157508181115b156119125760001992505050610e99565b600061191e8660801c90565b9050600061192c8660801c90565b9050600061193b825160001a90565b90505b600061194b848784611d31565b90506000198103611966576000199650505050505050610e99565b94859003949283019285851115611987576000199650505050505050610e99565b848320858520036119b35761199c8960801c90565b6119a69085612c22565b9650505050505050610e99565b856001036119cb576000199650505050505050610e99565b600019909501946001909301925061193e565b6000806000806119ee8760801c90565b90506001600160801b03871685870181811115611a1e576040516365f4e9df60e01b815260040160405180910390fd5b6001996001600160801b03988916608085811b919091179a50928290039098169201901b17949350505050565b60006001600160801b038381169083168114611a6b576000915050610e99565b611a8d611a788560801c90565b611a828560801c90565b839081902091201490565b949350505050565b60606001600160801b0382166001600160401b03811115611ab857611ab861229b565b6040519080825280601f01601f191660200182016040528015611ae2576020820181803683370190505b50905060208101611b0681611af78560801c90565b6001600160801b038616611df8565b50919050565b60006001600160801b03838116908316808303611b2e57600092505050610e99565b811580611b3a57508181115b15611b4b5760001992505050610e99565b6000611b578660801c90565b90506000611b658660801c90565b90506000611b7287611e06565b905060001984015b6000611b87858885611e4b565b90506000198103611ba357600019975050505050505050610e99565b80821115611bbc57600019975050505050505050610e99565b858420828203868101889020909103611bde579750610e999650505050505050565b8115611bec57509550611b7a565b60001998505050505050505050610e99565b600061103a8383611eff565b600061103a8383611f4c565b600080600360fc1b6001600160f81b0319841610801590611c455750603960f81b6001600160f81b0319841611155b15611c6357611c59603060f885901c612c35565b9360019350915050565b604160f81b6001600160f81b0319841610801590611c8f5750602360f91b6001600160f81b0319841611155b15611caf576041611ca560f885901c600a612c09565b611c599190612c35565b606160f81b6001600160f81b0319841610801590611cdb5750603360f91b6001600160f81b0319841611155b15611cf1576061611ca560f885901c600a612c09565b506000928392509050565b805115611d0c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b600061103a8383611fa6565b600060208311611d4d57611d4684848461200c565b905061103a565b83601f8416808503820160ff8516600080516020612c6f833981519152025b81881015611dae5787518118611d818161211d565b15611da257848903611d958a60208a61200c565b019550505050505061103a565b60208901985050611d6c565b82600003611dc45760001994505050505061103a565b611dcf82848861200c565b94506000198503611de85760001994505050505061103a565b838203850194505050505061103a565b8083828460045afa50505050565b60006001600160801b038216808203611e32576040516365f4e9df60e01b815260040160405180910390fd5b61103a60018203611e438560801c90565b015160001a90565b600060208311611e6057611d46848484612168565b601f83168484018115611e98578190036000611e7d828487612168565b90506000198114611e96579086900301915061103a9050565b505b60ff8416600080516020612c6f833981519152025b86821115611ef157601f1990910180519091908118611ecb8161211d565b15611eeb57878303611edf84602089612168565b0194505050505061103a565b50611ead565b506000199695505050505050565b60006001600160801b0383811690831680821015611f2257600092505050610e99565b8481831115611f3857611f3586836121b1565b90505b611f428186611a4b565b9695505050505050565b60006001600160801b0383811690831681811115611f6e578492505050610e99565b600080611f7b87846121fc565b9092509050611f8a8287611a4b565b15611f9a579350610e9992505050565b86945050505050610e99565b60006001600160801b03831115611fd05760405163fee7506f60e01b815260040160405180910390fd5b6001600160801b03821115611ff857604051633b6b098d60e01b815260040160405180910390fd5b506001600160801b031660809190911b1790565b825160009081602085111561202057602094505b601285106120aa5760ff8416600080516020612c6f8339815191520282186120506001600160801b03821761211d565b6000036120865760109150601a8610612081576120756001600160401b03821761211d565b60000361208157601891505b6120a4565b6120986001600160c01b03821761211d565b6000036120a457600891505b506120e8565b600a85106120e85760ff8416600080516020612c6f8339815191520282186120da6001600160c01b03821761211d565b6000036120e657600891505b505b848110156121105781811a60ff851681036121075750915061103a9050565b506001016120e8565b5060001995945050505050565b7ffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefeff81019019167f80808080808080808080808080808080808080808080808080808080808080801690565b6000602083111561217857602092505b83515b83156121a5576000199093019280841a60ff8416810361219f57849250505061103a565b5061217b565b50600019949350505050565b60006001600160801b038316808311156121de576040516365f4e9df60e01b815260040160405180910390fd5b611a8d6121eb8560801c90565b60801b6001600160801b0385161790565b600080600061220b8560801c90565b90506001600160801b03851680851115612238576040516365f4e9df60e01b815260040160405180910390fd5b608082901b6001600160801b038616176122726122558785612bda565b61225f8885612c22565b6001600160801b031660809190911b1790565b9350935050509250929050565b80356001600160a01b038116811461229657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b03808411156122cb576122cb61229b565b604051601f8501601f19908116603f011681019082821181831017156122f3576122f361229b565b8160405280935085815286868601111561230c57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561233957600080fd5b6123428361227f565b915060208301356001600160401b0381111561235d57600080fd5b8301601f8101851361236e57600080fd5b61237d858235602084016122b1565b9150509250929050565b803560ff8116811461229657600080fd5b60008083601f8401126123aa57600080fd5b5081356001600160401b038111156123c157600080fd5b60208301915083602082850101111561181b57600080fd5b60008060008060008060008060008060006101008c8e0312156123fb57600080fd5b6124048c61227f565b9a5061241260208d01612387565b995060408c0135985060608c013597506001600160401b038060808e0135111561243b57600080fd5b61244b8e60808f01358f01612398565b909850965060a08d013581101561246157600080fd5b6124718e60a08f01358f01612398565b909650945060c08d0135935060e08d013581101561248e57600080fd5b5061249f8d60e08e01358e01612398565b81935080925050509295989b509295989b9093969950565b60008060008060008060008060008060e08b8d0312156124d657600080fd5b6124df8b61227f565b99506124ed60208c01612387565b985060408b0135975060608b0135965060808b01356001600160401b038082111561251757600080fd5b6125238e838f01612398565b909850965060a08d013591508082111561253c57600080fd5b6125488e838f01612398565b909650945060c08d013591508082111561256157600080fd5b5061256e8d828e01612398565b915080935050809150509295989b9194979a5092959850565b60006020828403121561259957600080fd5b81356001600160401b038111156125af57600080fd5b8201601f810184136125c057600080fd5b611a8d848235602084016122b1565b60005b838110156125ea5781810151838201526020016125d2565b50506000910152565b6000815180845261260b8160208601602086016125cf565b601f01601f19169290920160200192915050565b60208152600061103a60208301846125f3565b60008060008060008060008060a0898b03121561264e57600080fd5b6126578961227f565b975060208901356001600160401b038082111561267357600080fd5b61267f8c838d01612398565b909950975060408b013591508082111561269857600080fd5b6126a48c838d01612398565b909750955060608b0135945060808b01359150808211156126c457600080fd5b506126d18b828c01612398565b999c989b5096995094979396929594505050565b6000806000606084860312156126fa57600080fd5b6127038461227f565b92506127116020850161227f565b915061271f6040850161227f565b90509250925092565b60008060008060008060006080888a03121561274357600080fd5b61274c8861227f565b965060208801356001600160401b038082111561276857600080fd5b6127748b838c01612398565b909850965060408a013591508082111561278d57600080fd5b6127998b838c01612398565b909650945060608a01359150808211156127b257600080fd5b506127bf8a828b01612398565b989b979a50959850939692959293505050565b6001600160f81b03198c811682528b1660018201526001600160601b031960608b811b821660028401528a901b1660168201526f6372656174654469644d617070696e6760801b602a82015260008789603a840137878201603a8101600081528789823750868101905085603a8201528385605a83013760009301605a0192835250909b9a5050505050505050505050565b6001600160f81b03198b811682528a1660018201526001600160601b031960608a811b8216600284015289901b166016820152746372656174655265736f757263654d617070696e6760581b602a82015260008688603f840137868201603f81016000815286888237508581019050603f810160008152848682375060009301603f0192835250909a9950505050505050505050565b600181811c9082168061290e57607f821691505b602082108103611b0657634e487b7160e01b600052602260045260246000fd5b60006020828403121561294057600080fd5b5051919050565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000611a8d602083018486612957565b805160208201516001600160801b031980821692919060108310156129c35780818460100360031b1b83161693505b505050919050565b83815260406020820152600061115c604083018486612957565b601f821115610788576000816000526020600020601f850160051c81016020861015612a0e5750805b601f850160051c820191505b81811015612a2d57828155600101612a1a565b505050505050565b6001600160401b03831115612a4c57612a4c61229b565b612a6083612a5a83546128fa565b836129e5565b6000601f841160018114612a945760008515612a7c5750838201355b600019600387901b1c1916600186901b1783556106bf565b600083815260209020601f19861690835b82811015612ac55786850135825560209485019460019092019101612aa5565b5086821015612ae25760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081526000612b08604083018688612957565b8281036020840152612b1b818587612957565b979650505050505050565b805160208201516001600160601b031980821692919060148310156129c35760149290920360031b82901b161692915050565b60008251612b6b8184602087016125cf565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612bbe57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610e9957610e99612b8b565b80820180821115610e9957610e99612b8b565b60ff81811683821602908116908181146117ac576117ac612b8b565b60ff8181168382160190811115610e9957610e99612b8b565b81810381811115610e9957610e99612b8b565b60ff8281168282160390811115610e9957610e99612b8b56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc010101010101010101010101010101010101010101010101010101010101010131323334353637383941424344454647484a4b4c4d4e505152535455565758595a6162636465666768696a6b6d6e6f707172737475767778797aa2646970667358221220e0b0a714b99821bba1e735cf2e20df77e61b4386b92ed0ea676e426b33fbe2be64736f6c63430008170033" } } } diff --git a/network/config/nodes/validator5/key b/network/config/nodes/validator5/key index ab007754..49c2eff5 100644 --- a/network/config/nodes/validator5/key +++ b/network/config/nodes/validator5/key @@ -1 +1 @@ -0x93945e32f8cb4afb4275cb014b363ccc794b0991eeab810ceadcaedf400d8c28 \ No newline at end of file +0x172c22cdceb87c56ef30c9b4cd34b20c3c63c19cc6bd7b7d12c2dfd2179b3f86 \ No newline at end of file diff --git a/smart_contracts/README.md b/smart_contracts/README.md index a23814c4..972a51e1 100644 --- a/smart_contracts/README.md +++ b/smart_contracts/README.md @@ -38,9 +38,9 @@ The following folders should be generated as the result: * [IndyDidRegistry TS contract wrapper class](./contracts-ts/IndyDidRegistry.ts) * [EthereumExtDidRegistry](./contracts/did/EthereumExtDidRegistry.sol) - [Ethereum DID Registry](https://github.com/uport-project/ethr-did-registry/tree/master) extended with permission checks * [DidRegistry TS contract wrapper class](./contracts-ts/EthereumDIDRegistry.ts) -* [SchemaRegistry](./contracts/cl/SchemaRegistryInterface.sol) - contract to manage Schemas +* [SchemaRegistry](contracts/anoncreds/SchemaRegistryInterface.sol) - contract to manage Schemas * [SchemaRegistry TS contract wrapper class](./contracts-ts/SchemaRegistry.ts) -* [CredentialDefinitionRegistry](./contracts/cl/CredentialDefinitionRegistryInterface.sol) - contract to manage CL Credential Definitions +* [CredentialDefinitionRegistry](contracts/anoncreds/CredentialDefinitionRegistryInterface.sol) - contract to manage Credential Definitions * [CredentialDefinitionRegistry TS contract wrapper class](./contracts-ts/CredentialDefinitionRegistry.ts) * [ValidatorControl](./contracts/network/ValidatorControlInterface.sol) - contract to manage network validator nodes. * [ValidatorControl TS contract wrapper class](./contracts-ts/ValidatorControl.ts) diff --git a/smart_contracts/contracts-ts/CredentialDefinitionRegistry.ts b/smart_contracts/contracts-ts/CredentialDefinitionRegistry.ts index cac7d1dd..9946e495 100644 --- a/smart_contracts/contracts-ts/CredentialDefinitionRegistry.ts +++ b/smart_contracts/contracts-ts/CredentialDefinitionRegistry.ts @@ -1,5 +1,5 @@ import { concat, getBytes, keccak256, Signature, toUtf8Bytes, toUtf8String } from 'ethers' -import { CredentialDefinitionMetadataStruct } from '../typechain-types/contracts/cl/CredentialDefinitionRegistry' +import { CredentialDefinitionMetadataStruct } from '../typechain-types/contracts/anoncreds/CredentialDefinitionRegistry' import { Contract } from '../utils/contract' export type CredentialDefinitionRecord = { diff --git a/smart_contracts/contracts-ts/EthereumDIDRegistry.ts b/smart_contracts/contracts-ts/EthereumDidRegistry.ts similarity index 100% rename from smart_contracts/contracts-ts/EthereumDIDRegistry.ts rename to smart_contracts/contracts-ts/EthereumDidRegistry.ts diff --git a/smart_contracts/contracts-ts/SchemaRegistry.ts b/smart_contracts/contracts-ts/SchemaRegistry.ts index 14ca5f1f..b5036e00 100644 --- a/smart_contracts/contracts-ts/SchemaRegistry.ts +++ b/smart_contracts/contracts-ts/SchemaRegistry.ts @@ -1,5 +1,5 @@ import { concat, getBytes, keccak256, Signature, toUtf8Bytes, toUtf8String } from 'ethers' -import { SchemaMetadataStruct } from '../typechain-types/contracts/cl/SchemaRegistry' +import { SchemaMetadataStruct } from '../typechain-types/contracts/anoncreds/SchemaRegistry' import { Contract } from '../utils/contract' export type SchemaRecord = { diff --git a/smart_contracts/contracts-ts/index.ts b/smart_contracts/contracts-ts/index.ts index f996aa7b..b12ce4e7 100644 --- a/smart_contracts/contracts-ts/index.ts +++ b/smart_contracts/contracts-ts/index.ts @@ -1,7 +1,7 @@ export * from './AccountControl' export * from './CredentialDefinitionRegistry' export * from './IndyDidRegistry' -export * from './EthereumDIDRegistry' +export * from './EthereumDidRegistry' export * from './RoleControl' export * from './SchemaRegistry' export * from './UniversalDidReolver' diff --git a/smart_contracts/contracts/cl/ClErrors.sol b/smart_contracts/contracts/anoncreds/AnoncredsErrors.sol similarity index 100% rename from smart_contracts/contracts/cl/ClErrors.sol rename to smart_contracts/contracts/anoncreds/AnoncredsErrors.sol diff --git a/smart_contracts/contracts/cl/CLRegistry.sol b/smart_contracts/contracts/anoncreds/AnoncredsRegistry.sol similarity index 97% rename from smart_contracts/contracts/cl/CLRegistry.sol rename to smart_contracts/contracts/anoncreds/AnoncredsRegistry.sol index e95d2152..693b5128 100644 --- a/smart_contracts/contracts/cl/CLRegistry.sol +++ b/smart_contracts/contracts/anoncreds/AnoncredsRegistry.sol @@ -5,10 +5,10 @@ import { DidNotFound, IncorrectDid, NotIdentityOwner } from "../did/DidErrors.so import { DidMetadata } from "../did/DidTypes.sol"; import { UniversalDidResolverInterface } from "../did/UniversalDidResolverInterface.sol"; import { Errors } from "../utils/Errors.sol"; -import { InvalidIssuerId, IssuerHasBeenDeactivated, IssuerNotFound } from "./ClErrors.sol"; +import { InvalidIssuerId, IssuerHasBeenDeactivated, IssuerNotFound } from "./AnoncredsErrors.sol"; import { RoleControlInterface } from "../auth/RoleControl.sol"; -contract CLRegistry { +contract AnoncredsRegistry { /** * @dev Reference to the contract that resolves DIDs */ diff --git a/smart_contracts/contracts/cl/CredentialDefinitionRegistry.sol b/smart_contracts/contracts/anoncreds/CredentialDefinitionRegistry.sol similarity index 94% rename from smart_contracts/contracts/cl/CredentialDefinitionRegistry.sol rename to smart_contracts/contracts/anoncreds/CredentialDefinitionRegistry.sol index 861e96dc..b19fd090 100644 --- a/smart_contracts/contracts/cl/CredentialDefinitionRegistry.sol +++ b/smart_contracts/contracts/anoncreds/CredentialDefinitionRegistry.sol @@ -6,12 +6,16 @@ import { ControlledUpgradeable } from "../upgrade/ControlledUpgradeable.sol"; import { CredentialDefinitionRecord } from "./CredentialDefinitionTypes.sol"; import { CredentialDefinitionRegistryInterface } from "./CredentialDefinitionRegistryInterface.sol"; -import { CredentialDefinitionAlreadyExist, CredentialDefinitionNotFound } from "./ClErrors.sol"; +import { CredentialDefinitionAlreadyExist, CredentialDefinitionNotFound } from "./AnoncredsErrors.sol"; import { SchemaRegistryInterface } from "./SchemaRegistryInterface.sol"; import { RoleControlInterface } from "../auth/RoleControl.sol"; -import { CLRegistry } from "./CLRegistry.sol"; +import { AnoncredsRegistry } from "./AnoncredsRegistry.sol"; -contract CredentialDefinitionRegistry is CredentialDefinitionRegistryInterface, ControlledUpgradeable, CLRegistry { +contract CredentialDefinitionRegistry is + CredentialDefinitionRegistryInterface, + ControlledUpgradeable, + AnoncredsRegistry +{ /** * @dev Reference to the contract that manages AnonCreds schemas */ diff --git a/smart_contracts/contracts/cl/CredentialDefinitionRegistryInterface.sol b/smart_contracts/contracts/anoncreds/CredentialDefinitionRegistryInterface.sol similarity index 100% rename from smart_contracts/contracts/cl/CredentialDefinitionRegistryInterface.sol rename to smart_contracts/contracts/anoncreds/CredentialDefinitionRegistryInterface.sol diff --git a/smart_contracts/contracts/cl/CredentialDefinitionTypes.sol b/smart_contracts/contracts/anoncreds/CredentialDefinitionTypes.sol similarity index 100% rename from smart_contracts/contracts/cl/CredentialDefinitionTypes.sol rename to smart_contracts/contracts/anoncreds/CredentialDefinitionTypes.sol diff --git a/smart_contracts/contracts/cl/SchemaRegistry.sol b/smart_contracts/contracts/anoncreds/SchemaRegistry.sol similarity index 94% rename from smart_contracts/contracts/cl/SchemaRegistry.sol rename to smart_contracts/contracts/anoncreds/SchemaRegistry.sol index 2ee02691..12494911 100644 --- a/smart_contracts/contracts/cl/SchemaRegistry.sol +++ b/smart_contracts/contracts/anoncreds/SchemaRegistry.sol @@ -4,13 +4,13 @@ pragma solidity ^0.8.20; import { UniversalDidResolverInterface } from "../did/UniversalDidResolverInterface.sol"; import { ControlledUpgradeable } from "../upgrade/ControlledUpgradeable.sol"; -import { SchemaAlreadyExist, SchemaNotFound } from "./ClErrors.sol"; +import { SchemaAlreadyExist, SchemaNotFound } from "./AnoncredsErrors.sol"; import { SchemaRegistryInterface } from "./SchemaRegistryInterface.sol"; import { SchemaRecord } from "./SchemaTypes.sol"; -import { CLRegistry } from "./CLRegistry.sol"; +import { AnoncredsRegistry } from "./AnoncredsRegistry.sol"; import { RoleControlInterface } from "../auth/RoleControl.sol"; -contract SchemaRegistry is SchemaRegistryInterface, ControlledUpgradeable, CLRegistry { +contract SchemaRegistry is SchemaRegistryInterface, ControlledUpgradeable, AnoncredsRegistry { /** * Mapping Schema ID to its Schema Details and Metadata. */ diff --git a/smart_contracts/contracts/cl/SchemaRegistryInterface.sol b/smart_contracts/contracts/anoncreds/SchemaRegistryInterface.sol similarity index 100% rename from smart_contracts/contracts/cl/SchemaRegistryInterface.sol rename to smart_contracts/contracts/anoncreds/SchemaRegistryInterface.sol diff --git a/smart_contracts/contracts/cl/SchemaTypes.sol b/smart_contracts/contracts/anoncreds/SchemaTypes.sol similarity index 100% rename from smart_contracts/contracts/cl/SchemaTypes.sol rename to smart_contracts/contracts/anoncreds/SchemaTypes.sol diff --git a/smart_contracts/test/cl/CredentialDefinitionRegistry.spec.ts b/smart_contracts/test/anoncreds/CredentialDefinitionRegistry.spec.ts similarity index 100% rename from smart_contracts/test/cl/CredentialDefinitionRegistry.spec.ts rename to smart_contracts/test/anoncreds/CredentialDefinitionRegistry.spec.ts diff --git a/smart_contracts/test/cl/SchemaRegistry.spec.ts b/smart_contracts/test/anoncreds/SchemaRegistry.spec.ts similarity index 100% rename from smart_contracts/test/cl/SchemaRegistry.spec.ts rename to smart_contracts/test/anoncreds/SchemaRegistry.spec.ts diff --git a/smart_contracts/test/utils/contract-helpers.ts b/smart_contracts/test/utils/contract-helpers.ts index 6af8ad3a..dbb6fbcd 100644 --- a/smart_contracts/test/utils/contract-helpers.ts +++ b/smart_contracts/test/utils/contract-helpers.ts @@ -1,6 +1,7 @@ import { getBytes } from 'ethers' import { CredentialDefinitionRegistry, + EthereumExtDidRegistry, IndyDidRegistry, LegacyMappingRegistry, RoleControl, @@ -15,9 +16,9 @@ import { getTestAccounts, ZERO_ADDRESS } from './test-entities' export const testActorAddress = '0x2036C6CD85692F0Fb2C26E6c6B2ECed9e4478Dfd' export const testActorPrivateKey = getBytes('0xa285ab66393c5fdda46d6fbad9e27fafd438254ab72ad5acb681a0e9f20f5d7b') -export class EthereumDIDRegistry extends testableContractMixin(Contract) { +export class TestableEthereumDIDRegistry extends testableContractMixin(Contract) { constructor() { - super(EthereumDIDRegistry.name) + super(EthereumExtDidRegistry.name) } } @@ -62,7 +63,7 @@ export async function deployIndyDidRegistry() { export async function deployUniversalDidResolver() { const { roleControl, indyDidRegistry, testAccounts } = await deployIndyDidRegistry() - const ethereumDIDRegistry = await new EthereumDIDRegistry().deploy() + const ethereumDIDRegistry = await new TestableEthereumDIDRegistry().deploy() const universalDidResolver = await new TestableUniversalDidResolver().deployProxy({ params: [ZERO_ADDRESS, indyDidRegistry.address, ethereumDIDRegistry.address], diff --git a/vdr/src/client/client.rs b/vdr/src/client/client.rs index ec553924..0f9bd9c2 100644 --- a/vdr/src/client/client.rs +++ b/vdr/src/client/client.rs @@ -165,6 +165,7 @@ impl LedgerClient { pub(crate) fn chain_id(&self) -> u64 { self.chain_id } + pub(crate) fn network(&self) -> Option<&String> { self.network.as_ref() } diff --git a/vdr/src/contracts/cl/credential_definition_registry.rs b/vdr/src/contracts/anoncreds/credential_definition_registry.rs similarity index 99% rename from vdr/src/contracts/cl/credential_definition_registry.rs rename to vdr/src/contracts/anoncreds/credential_definition_registry.rs index da077fe6..3fa6b3e5 100644 --- a/vdr/src/contracts/cl/credential_definition_registry.rs +++ b/vdr/src/contracts/anoncreds/credential_definition_registry.rs @@ -2,7 +2,7 @@ use log_derive::{logfn, logfn_inputs}; use crate::{ client::LedgerClient, - contracts::cl::types::{ + contracts::anoncreds::types::{ credential_definition::{CredentialDefinition, CredentialDefinitionRecord}, credential_definition_id::{CredentialDefinitionId, ParsedCredentialDefinitionId}, }, @@ -188,7 +188,6 @@ pub async fn resolve_credential_definition( let transaction = build_resolve_credential_definition_transaction(client, id).await?; let response = client.submit_transaction(&transaction).await?; - if response.is_empty() { return Err(VdrError::ClientInvalidResponse(format!( "Credential Definition not found for id: {:?}", @@ -215,7 +214,7 @@ pub mod test { use crate::{ client::client::test::{mock_client, CONFIG, DEFAULT_NONCE, TEST_ACCOUNT, TRUSTEE_ACCOUNT}, contracts::{ - cl::types::{ + anoncreds::types::{ credential_definition::test::{ credential_definition, credential_definition_value, CREDENTIAL_DEFINITION_TAG, }, diff --git a/vdr/src/contracts/cl/mod.rs b/vdr/src/contracts/anoncreds/mod.rs similarity index 100% rename from vdr/src/contracts/cl/mod.rs rename to vdr/src/contracts/anoncreds/mod.rs diff --git a/vdr/src/contracts/cl/schema_registry.rs b/vdr/src/contracts/anoncreds/schema_registry.rs similarity index 98% rename from vdr/src/contracts/cl/schema_registry.rs rename to vdr/src/contracts/anoncreds/schema_registry.rs index d754fcf1..a6047e6a 100644 --- a/vdr/src/contracts/cl/schema_registry.rs +++ b/vdr/src/contracts/anoncreds/schema_registry.rs @@ -2,7 +2,7 @@ use log_derive::{logfn, logfn_inputs}; use crate::{ client::LedgerClient, - contracts::cl::types::{ + contracts::anoncreds::types::{ schema::{Schema, SchemaRecord}, schema_id::{ParsedSchemaId, SchemaId}, }, @@ -206,7 +206,9 @@ pub mod test { use crate::{ client::client::test::{mock_client, CONFIG, DEFAULT_NONCE, TEST_ACCOUNT}, contracts::{ - cl::types::schema::test::{schema, SCHEMA_ATTRIBUTES, SCHEMA_NAME, SCHEMA_VERSION}, + anoncreds::types::schema::test::{ + schema, SCHEMA_ATTRIBUTES, SCHEMA_NAME, SCHEMA_VERSION, + }, did::types::{did::DID, did_doc::test::TEST_ETHR_DID}, }, }; diff --git a/vdr/src/contracts/cl/types/credential_definition.rs b/vdr/src/contracts/anoncreds/types/credential_definition.rs similarity index 96% rename from vdr/src/contracts/cl/types/credential_definition.rs rename to vdr/src/contracts/anoncreds/types/credential_definition.rs index 58e7fb15..bf2f6cd6 100644 --- a/vdr/src/contracts/cl/types/credential_definition.rs +++ b/vdr/src/contracts/anoncreds/types/credential_definition.rs @@ -4,7 +4,7 @@ use crate::{ CredentialDefinitionId, VdrResult, }; -use crate::contracts::{cl::types::schema_id::SchemaId, did::types::did::DID}; +use crate::contracts::{anoncreds::types::schema_id::SchemaId, did::types::did::DID}; use serde_derive::{Deserialize, Serialize}; #[derive(Debug, Clone, PartialEq, Deserialize, Serialize)] @@ -135,7 +135,9 @@ impl TryFrom for CredentialDefinitionRecord { pub mod test { use super::*; use crate::{ - contracts::{cl::types::schema::test::SCHEMA_ID, did::types::did_doc::test::TEST_ETHR_DID}, + contracts::{ + anoncreds::types::schema::test::SCHEMA_ID, did::types::did_doc::test::TEST_ETHR_DID, + }, utils::rand_string, }; use serde_json::json; diff --git a/vdr/src/contracts/cl/types/credential_definition_id.rs b/vdr/src/contracts/anoncreds/types/credential_definition_id.rs similarity index 100% rename from vdr/src/contracts/cl/types/credential_definition_id.rs rename to vdr/src/contracts/anoncreds/types/credential_definition_id.rs diff --git a/vdr/src/contracts/cl/types/mod.rs b/vdr/src/contracts/anoncreds/types/mod.rs similarity index 100% rename from vdr/src/contracts/cl/types/mod.rs rename to vdr/src/contracts/anoncreds/types/mod.rs diff --git a/vdr/src/contracts/cl/types/schema.rs b/vdr/src/contracts/anoncreds/types/schema.rs similarity index 100% rename from vdr/src/contracts/cl/types/schema.rs rename to vdr/src/contracts/anoncreds/types/schema.rs diff --git a/vdr/src/contracts/cl/types/schema_id.rs b/vdr/src/contracts/anoncreds/types/schema_id.rs similarity index 100% rename from vdr/src/contracts/cl/types/schema_id.rs rename to vdr/src/contracts/anoncreds/types/schema_id.rs diff --git a/vdr/src/contracts/migration/legacy_mapping_registry.rs b/vdr/src/contracts/migration/legacy_mapping_registry.rs index d8fcc960..9a3af13e 100644 --- a/vdr/src/contracts/migration/legacy_mapping_registry.rs +++ b/vdr/src/contracts/migration/legacy_mapping_registry.rs @@ -219,7 +219,7 @@ pub async fn build_create_resource_mapping_transaction( } /// Prepared data for execution of LegacyMappingRegistry.createResourceMapping contract method to -/// endorse a new CL mapping. +/// endorse a new resource mapping. /// /// #Params /// - `client` client connected to the network where contract will be executed diff --git a/vdr/src/contracts/mod.rs b/vdr/src/contracts/mod.rs index d2750022..94202f26 100644 --- a/vdr/src/contracts/mod.rs +++ b/vdr/src/contracts/mod.rs @@ -1,11 +1,13 @@ +pub mod anoncreds; pub mod auth; -pub mod cl; pub mod did; pub mod migration; pub mod network; +pub use anoncreds::{ + credential_definition_registry, schema_registry, CredentialDefinition, Schema, +}; pub use auth::{role_control, Role}; -pub use cl::{credential_definition_registry, schema_registry, CredentialDefinition, Schema}; pub use did::*; pub use migration::legacy_mapping_registry; pub use network::validator_control; diff --git a/vdr/src/lib.rs b/vdr/src/lib.rs index 9464ec53..7700d9cc 100644 --- a/vdr/src/lib.rs +++ b/vdr/src/lib.rs @@ -17,14 +17,14 @@ mod test; pub use client::{Client, Contract, LedgerClient}; pub use contracts::{ - auth::{role_control, Role}, - cl::{ + anoncreds::{ credential_definition_registry, schema_registry, types::{ credential_definition::CredentialDefinition, credential_definition_id::CredentialDefinitionId, schema::Schema, schema_id::SchemaId, }, }, + auth::{role_control, Role}, did::{ did_ethr_registry, did_indy_registry, did_resolver, types::{ diff --git a/vdr/src/test.rs b/vdr/src/test.rs index 38e57bb8..2ff4a214 100644 --- a/vdr/src/test.rs +++ b/vdr/src/test.rs @@ -1,8 +1,10 @@ use crate::{ client::client::test::{client, TRUSTEE_ACCOUNT}, contracts::{ + anoncreds::types::{ + credential_definition::test::credential_definition, schema::test::schema, + }, auth::{role_control, Role}, - cl::types::{credential_definition::test::credential_definition, schema::test::schema}, did::{did_indy_registry, types::did_doc::test::did_doc, DidRecord, DID, ETHR_DID_METHOD}, }, signer::basic_signer::{test::basic_signer, BasicSigner}, @@ -775,7 +777,7 @@ mod mapping { use crate::{ client::client::test::client, contracts::{ - cl::types::schema::test::{SCHEMA_NAME, SCHEMA_VERSION}, + anoncreds::types::schema::test::{SCHEMA_NAME, SCHEMA_VERSION}, migration::types::did::{LegacyDid, LegacyVerkey}, }, legacy_mapping_registry, Ed25519Signature, ResourceIdentifier, SchemaId,