diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..861d3b1 --- /dev/null +++ b/.env.example @@ -0,0 +1,3 @@ +ETHERSCAN_API_KEY=ABC123ABC123ABC123ABC123ABC123ABC1 +ROPSTEN_URL=https://eth-ropsten.alchemyapi.io/v2/ +PRIVATE_KEY=0xabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc1 diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..65ac373 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,8 @@ +node_modules +**/artifacts +**/dist +**/cache +**/coverage +**/build +**/lib +**/__tests__ \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..0b411c7 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,20 @@ +module.exports = { + env: { + browser: false, + es2021: true, + mocha: false, + node: true, + jest: true, + }, + plugins: ['@typescript-eslint'], + extends: [ + 'standard', + 'plugin:prettier/recommended', + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended', + ], + parser: '@typescript-eslint/parser', + rules: { + 'node/no-unsupported-features/es-syntax': ['error', { ignores: ['modules'] }], + }, +} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..02d6560 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,27 @@ +name: Build and Test NODE +on: [pull_request, push, workflow_dispatch] +jobs: + build-test: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Use Node.js + uses: actions/setup-node@v2 + with: + node-version: '14.x' + + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - uses: actions/cache@v2 + id: yarn-cache + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/package.json') }} + + - run: yarn install --frozen-lockfile + - run: yarn build + - run: yarn test + - run: yarn lint \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4fbf1d0..83447f3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,185 @@ -node_modules -seed -coverage.json -*.log + +# Created by https://www.toptal.com/developers/gitignore/api/node,intellij +# Edit at https://www.toptal.com/developers/gitignore?templates=node,intellij + +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/ +lib/ +build/ +.env +typechain/ +artifacts/ +cache/ + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test +.env.production + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +### Node Patch ### +# Serverless Webpack directories +.webpack/ + +# Optional stylelint cache +.stylelintcache + +# SvelteKit build / generate output +.svelte-kit + +# End of https://www.toptal.com/developers/gitignore/api/node,intellij \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..34f3dc2 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,7 @@ +node_modules +artifacts +dist +typechain +cache +coverage* +gasReporterOutput.json diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..0c93995 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "tabWidth": 2, + "printWidth": 120, + "singleQuote": true, + "trailingComma": "es5", + "semi": false +} diff --git a/.solhint.json b/.solhint.json index 5804bcc..1f1f911 100644 --- a/.solhint.json +++ b/.solhint.json @@ -1,6 +1,8 @@ { - "extends": "default", + "extends": "solhint:recommended", "rules": { - "not-rely-on-time": false + "compiler-version": ["error", "^0.8.0"], + "func-visibility": ["warn", { "ignoreConstructors": true }], + "not-rely-on-time": "off" } } diff --git a/README.md b/README.md index 89a4b6b..2a9d871 100644 --- a/README.md +++ b/README.md @@ -8,20 +8,30 @@ source: "https://github.com/uport-project/ethr-did-registry/blob/develop/README. # Ethereum DID Registry -This library contains the Ethereum contract code that allows the owner of an ethr-did identity to update the attributes that appear in its did-document. It exposes an API that allows developers to call the contract functions using Javascript. +This library contains the Ethereum contract code that allows the owner of an ethr-did identity to update the attributes +that appear in its did-document. It exposes an API that allows developers to call the contract functions using +Javascript. -Use this if you want to interact directly with a deployed registry contract directly, or deploy a copy of the contract to another Ethereum network. +Use this if you want to interact directly with a deployed registry contract directly, or deploy a copy of the contract +to another Ethereum network. -A DID is an [Identifier](https://w3c-ccg.github.io/did-spec/#decentralized-identifiers-dids) that allows you to lookup a [DID document](https://w3c-ccg.github.io/did-spec/#did-documents) that can be used to authenticate you and messages created by you. +A DID is an [Identifier](https://w3c.github.io/did-core/#a-simple-example) that allows you to lookup +a [DID document](https://w3c.github.io/did-core/#example-a-simple-did-document) that can be used to authenticate you and +messages created by you. -It's designed for resolving public keys for off-chain authentication—where the public key resolution is handled by using decentralized technology. +It's designed for resolving public keys for off-chain authentication—where the public key resolution is handled by using +decentralized technology. -This contract allows Ethereum addresses to present signing information about themselves with no prior registration. It allows them to perform key rotation and specify different keys and services that are used on its behalf for both on and off-chain usage. - -[FAQ and helpdesk support](http://bit.ly/uPort_helpdesk) +This contract allows Ethereum addresses to present signing information about themselves with no prior registration. It +allows them to perform key rotation and specify different keys and services that are used on its behalf for both on and +off-chain usage. ## Contract Deployments +> WARNING +> These are deployments of version 0.0.3 of the contract and they do not include recent updates. +> Join the discussion as to how to adopt these new changes [on our discord](https://discord.gg/MTeTAwSYe7) + | Network | Address | | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | Mainnet (id: 1) | [0xdca7ef03e98e0dc2b855be647c39abe984fcf21b](https://etherscan.io/address/0xdca7ef03e98e0dc2b855be647c39abe984fcf21b) | @@ -39,61 +49,68 @@ This contract allows Ethereum addresses to present signing information about the The DID Registry can be used from JavaScript as well as directly from other contracts. -To use the contract, we provide truffle artifacts. Once you require the `Ethr-DID-Registry` module, you will get an object containing the JSON. +To use the contract, we provide hardhat artifacts. Once you require the `ethr-did-registry` module, you will get an +object containing the JSON. ```javascript const DidRegistryContract = require('ethr-did-registry') ``` - You can use `truffle-contract` to utilize these artifacts. - -```javascript -const Contract = require('truffle-contract') -let DidReg = Contract(DidRegistryContract) -DidReg.setProvider(web3.currentProvider) -let didReg = DidReg.deployed() -``` - -You can also use web3. +You can use [`ethers.js`](https://github.com/ethers-io/ethers.js/) to utilize these artifacts. ```javascript -let networkId = 1 // Mainnet -let DidReg = web3.eth.contract(DidRegistryContract.abi) -let didReg = DidReg.at(DidRegistryContract.networks[networkId].address) +const { ethers } = require('ethers') +const DidReg = new ethers.Contract(registryAddress, DidRegistryContract.abi) +DidReg.connect(yourSignerOrProvider) ``` ## On-chain vs. Off-chain -For on-chain interactions Ethereum has a built-in account abstraction that can be used regardless of whether the account is a smart contract or a key pair. Any transaction has a `msg.sender` as the verified sender of the transaction. -Since each Ethereum transaction must be funded, there is a growing trend of on-chain transactions that are authenticated via an externally created signature and not by the actual transaction originator. This allows for 3rd party funding services, or for receivers to pay without any fundamental changes to the underlying Ethereum architecture. +For on-chain interactions Ethereum has a built-in account abstraction that can be used regardless of whether the account +is a smart contract or a key pair. Any transaction has a `msg.sender` as the verified sender of the transaction. + +Since each Ethereum transaction must be funded, there is a growing trend of on-chain transactions that are authenticated +via an externally created signature and not by the actual transaction originator. This allows for 3rd party funding +services, or for receivers to pay without any fundamental changes to the underlying Ethereum architecture. -These kinds of transactions have to be signed by an actual key pair and thus cannot be used to represent smart contract based Ethereum accounts. +These kinds of transactions have to be signed by an actual key pair and thus cannot be used to represent smart contract +based Ethereum accounts. -We propose a way of a smart contract or regular key pair delegating signing for various purposes to externally managed key pairs. This allows a smart contract to be represented, both on-chain as well as off-chain or in payment channels through temporary or permanent delegates. +We propose a way of a smart contract or regular key pair delegating signing for various purposes to externally managed +key pairs. This allows a smart contract to be represented, both on-chain as well as off-chain or in payment channels +through temporary or permanent delegates. ## Identity Identifier -Any Ethereum account regardless of whether it's a key pair or smart contract based is considered to be an account identifier. +Any Ethereum account regardless of whether it's a key pair or smart contract based is considered to be an account +identifier. An identity needs no registration. ## Identity Ownership -Each identity has a single address which maintains ultimate control over it. By default, each identity is controlled by itself. As ongoing technological and security improvements occur, an owner can replace themselves with any other Ethereum address, such as an advanced multi-signature contract. +Each identity has a single address which maintains ultimate control over it. By default, each identity is controlled by +itself. As ongoing technological and security improvements occur, an owner can replace themselves with any other +Ethereum address, such as an advanced multi-signature contract. -There is only ever a single identity owner. More advanced ownership models are managed through a multi-signature contract. +There is only ever a single identity owner. More advanced ownership models are managed through a multi-signature +contract. ### Looking up Identity Ownership -Ownership of identity is verified by calling the `identityOwner(address identity) public view returns(address)` function. This returns the address of the current Identity Owner. +Ownership of identity is verified by calling the `identityOwner(address identity) public view returns(address)` +function. This returns the address of the current Identity Owner. ### Changing Identity Ownership -The account owner can replace themselves at any time, by calling the `changeOwner(address identity, address newOwner)` function. +The account owner can replace themselves at any time, by calling the `changeOwner(address identity, address newOwner)` +function. -There is also a version of this function which is called with an externally created signature, that is passed to a transaction funding service. +There is also a version of this function which is called with an externally created signature, that is passed to a +transaction funding service. -The externally signed version has the following signature `changeOwnerSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, address newOwner)`. +The externally signed version has the following +signature `changeOwnerSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, address newOwner)`. The signature should be signed of the keccak256 hash of the following tightly packed parameters: @@ -111,28 +128,35 @@ The type of function is simply a string, that is determined by a protocol or app Examples: -- ‘DID-JWT’ -- ‘Raiden’ +- ‘DID-JWT’ +- ‘Raiden’ ### Validity -Delegates expire. The expiration time is application specific and dependent on the security requirements of the identity owner. +Delegates expire. The expiration time is application specific and dependent on the security requirements of the identity +owner. Validity is set using the number of seconds from the time that adding the delegate is set. ### Looking up a Delegate -You can check to see if an address is a delegate for an identity using the`validDelegate(address identity, bytes32 delegateType, address delegate) returns(bool)` function. This returns true if the address is a valid delegate of the given delegateType. +You can check to see if an address is a delegate for an identity using +the`validDelegate(address identity, bytes32 delegateType, address delegate) returns(bool)` function. This returns true +if the address is a valid delegate of the given delegateType. ### Adding a Delegate An identity can assign multiple delegates to manage signing on their behalf for specific purposes. -The account owner can call the `addDelegate(address identity, bytes32 delegateType, address delegate, uint validity)` function. +The account owner can call the `addDelegate(address identity, bytes32 delegateType, address delegate, uint validity)` +function. -There is also a version of this function which is called with an externally created signature, that is passed to a transaction funding service. +There is also a version of this function which is called with an externally created signature, that is passed to a +transaction funding service. -The externally signed version has the following signature `addDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate, uint validity)`. +The externally signed version has the following +signature `addDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate, uint validity)` +. The signature should be signed of the keccak256 hash of the following tightly packed parameters: @@ -140,11 +164,15 @@ The signature should be signed of the keccak256 hash of the following tightly pa ### Revoking a Delegate -A delegate may be manually revoked by calling the `revokeDelegate(address identity, string delegateType, address delegate)` function. +A delegate may be manually revoked by calling +the `revokeDelegate(address identity, string delegateType, address delegate)` function. -There is also a version of this function which is called with an externally created signature, that is passed to a transaction funding service. +There is also a version of this function which is called with an externally created signature, that is passed to a +transaction funding service. -The externally signed version has the following signature `revokeDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate)`. +The externally signed version has the following +signature `revokeDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate)` +. The signature should be signed of the keccak256 hash of the following tightly packed parameters: @@ -166,15 +194,20 @@ event DIDDelegateChanged( ## Adding Off-chain Attributes -An identity may need to publish some information that is only needed off-chain but still requires the security benefits of using a blockchain. +An identity may need to publish some information that is only needed off-chain but still requires the security benefits +of using a blockchain. ### Setting Attributes -These attributes are set using the `setAttribute(address identity, bytes32 name, bytes value, uint validity)` function and published using events. +These attributes are set using the `setAttribute(address identity, bytes32 name, bytes value, uint validity)` function +and published using events. -There is also a version of this function that is called with an externally created signature, that is passed to a transaction funding service. +There is also a version of this function that is called with an externally created signature, that is passed to a +transaction funding service. -The externally signed version has the following signature `setAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes value, uint validity)`. +The externally signed version has the following +signature `setAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes value, uint validity)` +. The signature should be signed off the keccak256 hash of the following tightly packed parameters: @@ -182,11 +215,14 @@ The signature should be signed off the keccak256 hash of the following tightly p ### Revoking Attributes -These attributes are revoked using the `revokeAttribute(address identity, bytes32 name, bytes value)` function and published using events. +These attributes are revoked using the `revokeAttribute(address identity, bytes32 name, bytes value)` function and +published using events. -There is also a version of this function that is called with an externally created signature, that is passed to a transaction funding service. +There is also a version of this function that is called with an externally created signature, that is passed to a +transaction funding service. -The externally signed version has the following signature `revokeAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes value)`. +The externally signed version has the following +signature `revokeAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes value)`. The signature should be signed off the keccak256 hash of the following tightly packed parameters: @@ -208,46 +244,61 @@ event DIDAttributeChanged( ### Delegate types and attribute names encoding -For gas cost reasons the names of attributes and types of delegates are fixed size `bytes32` values. -In most situations, this is not a problem since most can be represented by strings shorter than 32 bytes. -To get a bytes32 value from them, the recommended approach is to use the byte array representation of your string and right-pad it to get to 32 bytes. +For gas cost reasons the names of attributes and types of delegates are fixed size `bytes32` values. In most situations, +this is not a problem since most can be represented by strings shorter than 32 bytes. To get a bytes32 value from them, +the recommended approach is to use the byte array representation of your string and right-pad it to get to 32 bytes. ## Enumerating Linked Identity Events -Contract Events are a useful feature for storing data from smart contracts exclusively for off-chain use. Unfortunately, current Ethereum implementations provide a very inefficient lookup mechanism. +Contract Events are a useful feature for storing data from smart contracts exclusively for off-chain use. Unfortunately, +current Ethereum implementations provide a very inefficient lookup mechanism. -By using linked events that always link to the previous block with a change to the identity, we can solve this problem with improved performance. +By using linked events that always link to the previous block with a change to the identity, we can solve this problem +with improved performance. Each identity has its previously changed block stored in the `changed` mapping. -1. Lookup `previousChange` block for identity -2. Lookup all events for a given identity address using web3, but only for the `previousChange` block -3. Do something with the event -4. Find `previousChange` from the event and repeat +1. Lookup `previousChange` block for identity +2. Lookup all events for a given identity address using web3, but only for the `previousChange` block +3. Do something with the event +4. Find `previousChange` from the event and repeat Example code ```js const history = [] -previousChange = await didReg.changed(identity) -while (previousChange) { - const filter = await didReg.allEvents({topics: [identity], fromBlock: previousChange, toBlock: previousChange}) - const events = await getLogs(filter) - previousChange = undefined - for (let event of events) { - history.unshift(event) - previousChange = event.args.previousChange +let prevChange = (await DidReg.changed(identityAddress)).toNumber() +while (prevChange) { + const logs = await ethers.provider.getLogs({ + topics: [null, `0x000000000000000000000000${identityAddress}`], + fromBlock: prevChange, + toBlock: prevChange, + }) + prevChange = 0 + for (const log of logs) { + const logDescription = DidReg.interface.parseLog(log) + history.unshift(logDescription) + prevChange = logDescription.args.previousChange.toNumber() } } ``` ## Assemble a DID Document -The primary owner key should be looked up using `identityOwner(identity)`. This should be the first of the public keys listed. +The full spec describing how to interact with this registry to build a DID document can be found in +the [ehtr-did-resolver](https://github.com/decentralized-identity/ethr-did-resolver/blob/master/doc/did-method-spec.md) +repository. + +In short, you would do something like this: -Iterate through the `DIDDelegateChanged` events to build a list of additional keys and authentication sections as needed. The list of delegateTypes to include is still to be determined. +The primary owner key should be looked up using `identityOwner(identity)`. This should be the first of the public keys +listed. -Iterate through `DIDAttributeChanged` events for service entries, encrypted public keys, and other public names. The attribute names are still to be determined. +Iterate through the `DIDDelegateChanged` events to build a list of additional keys and authentication sections as +needed. The list of delegateTypes to include is still to be determined. + +Iterate through `DIDAttributeChanged` events for service entries, encrypted public keys, and other public names. The +attribute names are still to be determined. ## Deploy contract @@ -257,12 +308,15 @@ First run, $ scripts/generateDeployTxs.js ``` -You will get the data needed to deploy as an output from this command. Copy the `senderAddress` and send `cost` amount of ether to that address on the Ethereum network you wish to deploy to. Once this tx is confirmed, simply send the `rawTx` to the same network. `contractAddress` is the address of the deployed contract. This will be the same on all networks it's deployed to. +You will get the data needed to deploy as an output from this command. Copy the `senderAddress` and send `cost` amount +of ether to that address on the Ethereum network you wish to deploy to. Once this tx is confirmed, simply send +the `rawTx` to the same network. `contractAddress` is the address of the deployed contract. This will be the same on all +networks it's deployed to. ## Testing the Contracts -Make sure you have truffle installed, then run: - ```bash -$ truffle test +yarn install +yarn build +yarn test ``` diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..eee8732 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [['@babel/preset-env', { targets: { node: 'current' } }], '@babel/preset-typescript'], +} diff --git a/build/contracts/EthereumDIDRegistry.json b/build/contracts/EthereumDIDRegistry.json deleted file mode 100644 index f6b02bc..0000000 --- a/build/contracts/EthereumDIDRegistry.json +++ /dev/null @@ -1,19922 +0,0 @@ -{ - "contractName": "EthereumDIDRegistry", - "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "owners", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "bytes32" - }, - { - "name": "", - "type": "address" - } - ], - "name": "delegates", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "nonce", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "changed", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "identity", - "type": "address" - }, - { - "indexed": false, - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "name": "previousChange", - "type": "uint256" - } - ], - "name": "DIDOwnerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "identity", - "type": "address" - }, - { - "indexed": false, - "name": "delegateType", - "type": "bytes32" - }, - { - "indexed": false, - "name": "delegate", - "type": "address" - }, - { - "indexed": false, - "name": "validTo", - "type": "uint256" - }, - { - "indexed": false, - "name": "previousChange", - "type": "uint256" - } - ], - "name": "DIDDelegateChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "identity", - "type": "address" - }, - { - "indexed": false, - "name": "name", - "type": "bytes32" - }, - { - "indexed": false, - "name": "value", - "type": "bytes" - }, - { - "indexed": false, - "name": "validTo", - "type": "uint256" - }, - { - "indexed": false, - "name": "previousChange", - "type": "uint256" - } - ], - "name": "DIDAttributeChanged", - "type": "event" - }, - { - "constant": true, - "inputs": [ - { - "name": "identity", - "type": "address" - } - ], - "name": "identityOwner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "delegateType", - "type": "bytes32" - }, - { - "name": "delegate", - "type": "address" - } - ], - "name": "validDelegate", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "newOwner", - "type": "address" - } - ], - "name": "changeOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "sigV", - "type": "uint8" - }, - { - "name": "sigR", - "type": "bytes32" - }, - { - "name": "sigS", - "type": "bytes32" - }, - { - "name": "newOwner", - "type": "address" - } - ], - "name": "changeOwnerSigned", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "delegateType", - "type": "bytes32" - }, - { - "name": "delegate", - "type": "address" - }, - { - "name": "validity", - "type": "uint256" - } - ], - "name": "addDelegate", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "sigV", - "type": "uint8" - }, - { - "name": "sigR", - "type": "bytes32" - }, - { - "name": "sigS", - "type": "bytes32" - }, - { - "name": "delegateType", - "type": "bytes32" - }, - { - "name": "delegate", - "type": "address" - }, - { - "name": "validity", - "type": "uint256" - } - ], - "name": "addDelegateSigned", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "delegateType", - "type": "bytes32" - }, - { - "name": "delegate", - "type": "address" - } - ], - "name": "revokeDelegate", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "sigV", - "type": "uint8" - }, - { - "name": "sigR", - "type": "bytes32" - }, - { - "name": "sigS", - "type": "bytes32" - }, - { - "name": "delegateType", - "type": "bytes32" - }, - { - "name": "delegate", - "type": "address" - } - ], - "name": "revokeDelegateSigned", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "name", - "type": "bytes32" - }, - { - "name": "value", - "type": "bytes" - }, - { - "name": "validity", - "type": "uint256" - } - ], - "name": "setAttribute", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "sigV", - "type": "uint8" - }, - { - "name": "sigR", - "type": "bytes32" - }, - { - "name": "sigS", - "type": "bytes32" - }, - { - "name": "name", - "type": "bytes32" - }, - { - "name": "value", - "type": "bytes" - }, - { - "name": "validity", - "type": "uint256" - } - ], - "name": "setAttributeSigned", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "name", - "type": "bytes32" - }, - { - "name": "value", - "type": "bytes" - } - ], - "name": "revokeAttribute", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "sigV", - "type": "uint8" - }, - { - "name": "sigR", - "type": "bytes32" - }, - { - "name": "sigS", - "type": "bytes32" - }, - { - "name": "name", - "type": "bytes32" - }, - { - "name": "value", - "type": "bytes" - } - ], - "name": "revokeAttributeSigned", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50612273806100206000396000f3006080604052600436106100e5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062c023da146100ea578063022914a7146101815780630d44625b14610204578063123b5e9814610289578063240cf1fa14610353578063622b2a3c146103df57806370ae92d2146104685780637ad4b0a4146104bf57806380b29f7c146105605780638733d4e8146105d157806393072684146106545780639c2c1b2b146106ee578063a7068d6614610792578063e476af5c1461080d578063f00d4b5d146108cd578063f96d0f9f14610930575b600080fd5b3480156100f657600080fd5b5061017f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610987565b005b34801561018d57600080fd5b506101c2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610998565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021057600080fd5b50610273600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109cb565b6040518082815260200191505060405180910390f35b34801561029557600080fd5b50610351600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001909291905050506109fd565b005b34801561035f57600080fd5b506103dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c72565b005b3480156103eb57600080fd5b5061044e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ec1565b604051808215151515815260200191505060405180910390f35b34801561047457600080fd5b506104a9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f86565b6040518082815260200191505060405180910390f35b3480156104cb57600080fd5b5061055e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610f9e565b005b34801561056c57600080fd5b506105cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fb1565b005b3480156105dd57600080fd5b50610612600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fc2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066057600080fd5b506106ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611058565b005b3480156106fa57600080fd5b50610790600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112b9565b005b34801561079e57600080fd5b5061080b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611524565b005b34801561081957600080fd5b506108cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611537565b005b3480156108d957600080fd5b5061092e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117a2565b005b34801561093c57600080fd5b50610971600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b1565b6040518082815260200191505060405180910390f35b610993833384846117c9565b505050565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548b88888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7365744174747269627574650000000000000000000000000000000000000000815250600c01846000191660001916815260200183805190602001908083835b602083101515610c135780518252602082019150602081019050602083039250610bee565b6001836020036101000a0380198251168184511680821785525050505050509050018281526020019850505050505050505060405180910390209050610c6888610c608a8a8a8a8761196c565b868686611a90565b5050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f0100000000000000000000000000000000000000000000000000000000000000023060036000610cca8b610fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054898660405180877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f6368616e67654f776e6572000000000000000000000000000000000000000000815250600b018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401965050505050505060405180910390209050610eb986610eb3888888888761196c565b84611c35565b505050505050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560405180826000191660001916815260200191505060405180910390206000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490504281119150509392505050565b60036020528060005260406000206000915090505481565b610fab8433858585611a90565b50505050565b610fbd83338484611e02565b505050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1614151561104e57809150611052565b8291505b50919050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360006110b08c610fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7265766f6b6544656c6567617465000000000000000000000000000000000000815250600e0183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401975050505050505050604051809103902090506112b0876112a9898989898761196c565b8585611e02565b50505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360006113118d610fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548b88888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f61646444656c6567617465000000000000000000000000000000000000000000815250600b0184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001985050505050505050506040518091039020905061151a886115128a8a8a8a8761196c565b868686612022565b5050505050505050565b6115318433858585612022565b50505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7265766f6b654174747269627574650000000000000000000000000000000000815250600f01836000191660001916815260200182805190602001908083835b60208310151561174c5780518252602082019150602081019050602083039250611727565b6001836020036101000a0380198251168184511680821785525050505050509050019750505050505050506040518091039020905061179987611792898989898761196c565b85856117c9565b50505050505050565b6117ad823383611c35565b5050565b60026020528060005260406000206000915090505481565b83836117d482610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561180d57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff167f18ab6b2ae3d64306c00ce663125f2bd680e441a098de1635bd7ad8b0d44965e485856000600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405180856000191660001916815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b838110156118e35780820151818401526020810190506118c8565b50505050905090810190601f1680156119105780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a243600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b600080600183878787604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156119e6573d6000803e3d6000fd5b5050506020604051035190506119fb87610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611a3457600080fd5b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508091505095945050505050565b8484611a9b82610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611ad457600080fd5b8673ffffffffffffffffffffffffffffffffffffffff167f18ab6b2ae3d64306c00ce663125f2bd680e441a098de1635bd7ad8b0d44965e48686864201600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405180856000191660001916815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b83811015611bab578082015181840152602081019050611b90565b50505050905090810190601f168015611bd85780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a243600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050565b8282611c4082610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611c7957600080fd5b826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff167f38a5a6e68f30ed1ab45860a4afb34bcb2fc00f22ca462d249b8a8d40cda6f7a384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a243600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b8383611e0d82610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611e4657600080fd5b42600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008660405180826000191660001916815260200191505060405180910390206000191660001916815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff167f5a5084339536bcab65f20799fcc58724588145ca054bd2be626174b27ba156f7858542600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518085600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a243600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b848461202d82610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561206657600080fd5b824201600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760405180826000191660001916815260200191505060405180910390206000191660001916815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff167f5a5084339536bcab65f20799fcc58724588145ca054bd2be626174b27ba156f78686864201600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518085600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a243600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050505600a165627a7a72305820ce15794c08edea0fae7ce9c85210f71a312b60c8d5cb2e5fd716c2adcd7403c70029", - "deployedBytecode": "0x6080604052600436106100e5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062c023da146100ea578063022914a7146101815780630d44625b14610204578063123b5e9814610289578063240cf1fa14610353578063622b2a3c146103df57806370ae92d2146104685780637ad4b0a4146104bf57806380b29f7c146105605780638733d4e8146105d157806393072684146106545780639c2c1b2b146106ee578063a7068d6614610792578063e476af5c1461080d578063f00d4b5d146108cd578063f96d0f9f14610930575b600080fd5b3480156100f657600080fd5b5061017f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610987565b005b34801561018d57600080fd5b506101c2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610998565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021057600080fd5b50610273600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109cb565b6040518082815260200191505060405180910390f35b34801561029557600080fd5b50610351600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001909291905050506109fd565b005b34801561035f57600080fd5b506103dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c72565b005b3480156103eb57600080fd5b5061044e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ec1565b604051808215151515815260200191505060405180910390f35b34801561047457600080fd5b506104a9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f86565b6040518082815260200191505060405180910390f35b3480156104cb57600080fd5b5061055e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610f9e565b005b34801561056c57600080fd5b506105cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fb1565b005b3480156105dd57600080fd5b50610612600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fc2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066057600080fd5b506106ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611058565b005b3480156106fa57600080fd5b50610790600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112b9565b005b34801561079e57600080fd5b5061080b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611524565b005b34801561081957600080fd5b506108cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611537565b005b3480156108d957600080fd5b5061092e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117a2565b005b34801561093c57600080fd5b50610971600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b1565b6040518082815260200191505060405180910390f35b610993833384846117c9565b505050565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548b88888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7365744174747269627574650000000000000000000000000000000000000000815250600c01846000191660001916815260200183805190602001908083835b602083101515610c135780518252602082019150602081019050602083039250610bee565b6001836020036101000a0380198251168184511680821785525050505050509050018281526020019850505050505050505060405180910390209050610c6888610c608a8a8a8a8761196c565b868686611a90565b5050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f0100000000000000000000000000000000000000000000000000000000000000023060036000610cca8b610fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054898660405180877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f6368616e67654f776e6572000000000000000000000000000000000000000000815250600b018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401965050505050505060405180910390209050610eb986610eb3888888888761196c565b84611c35565b505050505050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560405180826000191660001916815260200191505060405180910390206000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490504281119150509392505050565b60036020528060005260406000206000915090505481565b610fab8433858585611a90565b50505050565b610fbd83338484611e02565b505050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1614151561104e57809150611052565b8291505b50919050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360006110b08c610fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7265766f6b6544656c6567617465000000000000000000000000000000000000815250600e0183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401975050505050505050604051809103902090506112b0876112a9898989898761196c565b8585611e02565b50505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360006113118d610fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548b88888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f61646444656c6567617465000000000000000000000000000000000000000000815250600b0184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001985050505050505050506040518091039020905061151a886115128a8a8a8a8761196c565b868686612022565b5050505050505050565b6115318433858585612022565b50505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7265766f6b654174747269627574650000000000000000000000000000000000815250600f01836000191660001916815260200182805190602001908083835b60208310151561174c5780518252602082019150602081019050602083039250611727565b6001836020036101000a0380198251168184511680821785525050505050509050019750505050505050506040518091039020905061179987611792898989898761196c565b85856117c9565b50505050505050565b6117ad823383611c35565b5050565b60026020528060005260406000206000915090505481565b83836117d482610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561180d57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff167f18ab6b2ae3d64306c00ce663125f2bd680e441a098de1635bd7ad8b0d44965e485856000600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405180856000191660001916815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b838110156118e35780820151818401526020810190506118c8565b50505050905090810190601f1680156119105780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a243600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b600080600183878787604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156119e6573d6000803e3d6000fd5b5050506020604051035190506119fb87610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611a3457600080fd5b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508091505095945050505050565b8484611a9b82610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611ad457600080fd5b8673ffffffffffffffffffffffffffffffffffffffff167f18ab6b2ae3d64306c00ce663125f2bd680e441a098de1635bd7ad8b0d44965e48686864201600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405180856000191660001916815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b83811015611bab578082015181840152602081019050611b90565b50505050905090810190601f168015611bd85780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a243600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050565b8282611c4082610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611c7957600080fd5b826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff167f38a5a6e68f30ed1ab45860a4afb34bcb2fc00f22ca462d249b8a8d40cda6f7a384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a243600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b8383611e0d82610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611e4657600080fd5b42600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008660405180826000191660001916815260200191505060405180910390206000191660001916815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff167f5a5084339536bcab65f20799fcc58724588145ca054bd2be626174b27ba156f7858542600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518085600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a243600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b848461202d82610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561206657600080fd5b824201600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760405180826000191660001916815260200191505060405180910390206000191660001916815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff167f5a5084339536bcab65f20799fcc58724588145ca054bd2be626174b27ba156f78686864201600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518085600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a243600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050505600a165627a7a72305820ce15794c08edea0fae7ce9c85210f71a312b60c8d5cb2e5fd716c2adcd7403c70029", - "sourceMap": "25:5537:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25:5537:0;;;;;;;", - "deployedSourceMap": "25:5537:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5079:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5079:138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;59:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;59:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;104:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;104:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4467:364;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4467:364:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1856:326;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1856:326:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1260:217;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1260:217:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;232:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;232:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4306:157;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4306:157:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3484:160;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3484:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;790:189;;8:9:-1;5:2;;;30:1;27;20:12;5:2;790:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3648:385;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3648:385:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2736:411;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2736:411:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2553:179;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2553:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5220:339;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5220:339:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1734:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1734:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;189:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;189:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5079:138;5162:50;5178:8;5188:10;5200:4;5206:5;5162:15;:50::i;:::-;5079:138;;;:::o;59:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;104:81::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4467:364::-;4608:12;4638:4;4633:10;;4650:1;4645:7;;4654:4;4660:5;:15;4666:8;4660:15;;;;;;;;;;;;;;;;4677:8;4703:4;4709:5;4716:8;4623:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4623:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4608:117;;4731:95;4744:8;4754:48;4769:8;4779:4;4785;4791;4797;4754:14;:48::i;:::-;4804:4;4810:5;4817:8;4731:12;:95::i;:::-;4467:364;;;;;;;;:::o;1856:326::-;1972:12;2002:4;1997:10;;2014:1;2009:7;;2018:4;2024:5;:30;2030:23;2044:8;2030:13;:23::i;:::-;2024:30;;;;;;;;;;;;;;;;2056:8;2081;1987:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1972:118;;2096:81;2108:8;2118:48;2133:8;2143:4;2149;2155;2161;2118:14;:48::i;:::-;2168:8;2096:11;:81::i;:::-;1856:326;;;;;;:::o;1260:217::-;1361:4;1373:13;1389:9;:19;1399:8;1389:19;;;;;;;;;;;;;;;:44;1419:12;1409:23;;;;;;;;;;;;;;;;;;;;;;;;1389:44;;;;;;;;;;;;;;;;;:54;1434:8;1389:54;;;;;;;;;;;;;;;;1373:70;;1468:3;1457:8;:14;1449:23;;1260:217;;;;;;:::o;232:37::-;;;;;;;;;;;;;;;;;:::o;4306:157::-;4401:57;4414:8;4424:10;4436:4;4442:5;4449:8;4401:12;:57::i;:::-;4306:157;;;;:::o;3484:160::-;3579:60;3594:8;3604:10;3616:12;3630:8;3579:14;:60::i;:::-;3484:160;;;:::o;790:189::-;851:7;867:13;883:6;:16;890:8;883:16;;;;;;;;;;;;;;;;;;;;;;;;;867:32;;919:3;910:5;:12;;;;906:47;;;940:5;933:12;;;;906:47;966:8;959:15;;790:189;;;;;:::o;3648:385::-;3789:12;3819:4;3814:10;;3831:1;3826:7;;3835:4;3841:5;:30;3847:23;3861:8;3847:13;:23::i;:::-;3841:30;;;;;;;;;;;;;;;;3873:8;3901:12;3915:8;3804:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3789:135;;3930:98;3945:8;3955:48;3970:8;3980:4;3986;3992;3998;3955:14;:48::i;:::-;4005:12;4019:8;3930:14;:98::i;:::-;3648:385;;;;;;;:::o;2736:411::-;2889:12;2919:4;2914:10;;2931:1;2926:7;;2935:4;2941:5;:30;2947:23;2961:8;2947:13;:23::i;:::-;2941:30;;;;;;;;;;;;;;;;2973:8;2998:12;3012:8;3022;2904:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2889:142;;3037:105;3049:8;3059:48;3074:8;3084:4;3090;3096;3102;3059:14;:48::i;:::-;3109:12;3123:8;3133;3037:11;:105::i;:::-;2736:411;;;;;;;;:::o;2553:179::-;2660:67;2672:8;2682:10;2694:12;2708:8;2718;2660:11;:67::i;:::-;2553:179;;;;:::o;5220:339::-;5349:12;5379:4;5374:10;;5391:1;5386:7;;5395:4;5401:5;:15;5407:8;5401:15;;;;;;;;;;;;;;;;5418:8;5447:4;5453:5;5364:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5364:95:0;;;;;;;;;;;;;;;;;;;;;;5349:110;;5466:88;5482:8;5492:48;5507:8;5517:4;5523;5529;5535;5492:14;:48::i;:::-;5542:4;5548:5;5466:15;:88::i;:::-;5220:339;;;;;;;:::o;1734:118::-;1804:43;1816:8;1826:10;1838:8;1804:11;:43::i;:::-;1734:118;;:::o;189:39::-;;;;;;;;;;;;;;;;;:::o;4835:240::-;4940:8;4950:5;350:23;364:8;350:13;:23::i;:::-;341:32;;:5;:32;;;332:42;;;;;;;;4988:8;4968:64;;;4998:4;5004:5;5011:1;5014:7;:17;5022:8;5014:17;;;;;;;;;;;;;;;;4968:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4968:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5058:12;5038:7;:17;5046:8;5038:17;;;;;;;;;;;;;;;:32;;;;4835:240;;;;;;:::o;983:273::-;1096:7;1111:14;1128:33;1138:4;1144;1150;1156;1128:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1128:33:0;;;;;;;;1111:50;;1185:23;1199:8;1185:13;:23::i;:::-;1175:33;;:6;:33;;;1167:42;;;;;;;;1215:5;:15;1221:8;1215:15;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;1245:6;1238:13;;983:273;;;;;;;;:::o;4037:265::-;4154:8;4164:5;350:23;364:8;350:13;:23::i;:::-;341:32;;:5;:32;;;332:42;;;;;;;;4202:8;4182:77;;;4212:4;4218:5;4231:8;4225:3;:14;4241:7;:17;4249:8;4241:17;;;;;;;;;;;;;;;;4182:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4182:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4285:12;4265:7;:17;4273:8;4265:17;;;;;;;;;;;;;;;:32;;;;4037:265;;;;;;;:::o;1481:249::-;1572:8;1582:5;350:23;364:8;350:13;:23::i;:::-;341:32;;:5;:32;;;332:42;;;;;;;;1614:8;1595:6;:16;1602:8;1595:16;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;1649:8;1633:54;;;1659:8;1669:7;:17;1677:8;1669:17;;;;;;;;;;;;;;;;1633:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;1713:12;1693:7;:17;1701:8;1693:17;;;;;;;;;;;;;;;:32;;;;1481:249;;;;;:::o;3151:329::-;3267:8;3277:5;350:23;364:8;350:13;:23::i;:::-;341:32;;:5;:32;;;332:42;;;;;;;;3347:3;3290:9;:19;3300:8;3290:19;;;;;;;;;;;;;;;:44;3320:12;3310:23;;;;;;;;;;;;;;;;;;;;;;;;3290:44;;;;;;;;;;;;;;;;;:54;3335:8;3290:54;;;;;;;;;;;;;;;:60;;;;3380:8;3361:76;;;3390:12;3404:8;3414:3;3419:7;:17;3427:8;3419:17;;;;;;;;;;;;;;;;3361:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3463:12;3443:7;:17;3451:8;3443:17;;;;;;;;;;;;;;;:32;;;;3151:329;;;;;;:::o;2186:363::-;2314:8;2324:5;350:23;364:8;350:13;:23::i;:::-;341:32;;:5;:32;;;332:42;;;;;;;;2400:8;2394:3;:14;2337:9;:19;2347:8;2337:19;;;;;;;;;;;;;;;:44;2367:12;2357:23;;;;;;;;;;;;;;;;;;;;;;;;2337:44;;;;;;;;;;;;;;;;;:54;2382:8;2337:54;;;;;;;;;;;;;;;:71;;;;2438:8;2419:87;;;2448:12;2462:8;2478;2472:3;:14;2488:7;:17;2496:8;2488:17;;;;;;;;;;;;;;;;2419:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2532:12;2512:7;:17;2520:8;2512:17;;;;;;;;;;;;;;;:32;;;;2186:363;;;;;;;:::o", - "source": "pragma solidity ^0.4.4;\n\ncontract EthereumDIDRegistry {\n\n mapping(address => address) public owners;\n mapping(address => mapping(bytes32 => mapping(address => uint))) public delegates;\n mapping(address => uint) public changed;\n mapping(address => uint) public nonce;\n\n modifier onlyOwner(address identity, address actor) {\n require (actor == identityOwner(identity));\n _;\n }\n\n event DIDOwnerChanged(\n address indexed identity,\n address owner,\n uint previousChange\n );\n\n event DIDDelegateChanged(\n address indexed identity,\n bytes32 delegateType,\n address delegate,\n uint validTo,\n uint previousChange\n );\n\n event DIDAttributeChanged(\n address indexed identity,\n bytes32 name,\n bytes value,\n uint validTo,\n uint previousChange\n );\n\n function identityOwner(address identity) public view returns(address) {\n address owner = owners[identity];\n if (owner != 0x0) {\n return owner;\n }\n return identity;\n }\n\n function checkSignature(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 hash) internal returns(address) {\n address signer = ecrecover(hash, sigV, sigR, sigS);\n require(signer == identityOwner(identity));\n nonce[identity]++;\n return signer;\n }\n\n function validDelegate(address identity, bytes32 delegateType, address delegate) public view returns(bool) {\n uint validity = delegates[identity][keccak256(delegateType)][delegate];\n return (validity > now);\n }\n\n function changeOwner(address identity, address actor, address newOwner) internal onlyOwner(identity, actor) {\n owners[identity] = newOwner;\n emit DIDOwnerChanged(identity, newOwner, changed[identity]);\n changed[identity] = block.number;\n }\n\n function changeOwner(address identity, address newOwner) public {\n changeOwner(identity, msg.sender, newOwner);\n }\n\n function changeOwnerSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, address newOwner) public {\n bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, \"changeOwner\", newOwner);\n changeOwner(identity, checkSignature(identity, sigV, sigR, sigS, hash), newOwner);\n }\n\n function addDelegate(address identity, address actor, bytes32 delegateType, address delegate, uint validity) internal onlyOwner(identity, actor) {\n delegates[identity][keccak256(delegateType)][delegate] = now + validity;\n emit DIDDelegateChanged(identity, delegateType, delegate, now + validity, changed[identity]);\n changed[identity] = block.number;\n }\n\n function addDelegate(address identity, bytes32 delegateType, address delegate, uint validity) public {\n addDelegate(identity, msg.sender, delegateType, delegate, validity);\n }\n\n function addDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate, uint validity) public {\n bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, \"addDelegate\", delegateType, delegate, validity);\n addDelegate(identity, checkSignature(identity, sigV, sigR, sigS, hash), delegateType, delegate, validity);\n }\n\n function revokeDelegate(address identity, address actor, bytes32 delegateType, address delegate) internal onlyOwner(identity, actor) {\n delegates[identity][keccak256(delegateType)][delegate] = now;\n emit DIDDelegateChanged(identity, delegateType, delegate, now, changed[identity]);\n changed[identity] = block.number;\n }\n\n function revokeDelegate(address identity, bytes32 delegateType, address delegate) public {\n revokeDelegate(identity, msg.sender, delegateType, delegate);\n }\n\n function revokeDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate) public {\n bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, \"revokeDelegate\", delegateType, delegate);\n revokeDelegate(identity, checkSignature(identity, sigV, sigR, sigS, hash), delegateType, delegate);\n }\n\n function setAttribute(address identity, address actor, bytes32 name, bytes value, uint validity ) internal onlyOwner(identity, actor) {\n emit DIDAttributeChanged(identity, name, value, now + validity, changed[identity]);\n changed[identity] = block.number;\n }\n\n function setAttribute(address identity, bytes32 name, bytes value, uint validity) public {\n setAttribute(identity, msg.sender, name, value, validity);\n }\n\n function setAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes value, uint validity) public {\n bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identity], identity, \"setAttribute\", name, value, validity);\n setAttribute(identity, checkSignature(identity, sigV, sigR, sigS, hash), name, value, validity);\n }\n\n function revokeAttribute(address identity, address actor, bytes32 name, bytes value ) internal onlyOwner(identity, actor) {\n emit DIDAttributeChanged(identity, name, value, 0, changed[identity]);\n changed[identity] = block.number;\n }\n\n function revokeAttribute(address identity, bytes32 name, bytes value) public {\n revokeAttribute(identity, msg.sender, name, value);\n }\n\n function revokeAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes value) public {\n bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identity], identity, \"revokeAttribute\", name, value); \n revokeAttribute(identity, checkSignature(identity, sigV, sigR, sigS, hash), name, value);\n }\n\n}\n", - "sourcePath": "/Users/pelleb/code/consensys/ethereum-did-registry/contracts/EthereumDIDRegistry.sol", - "ast": { - "absolutePath": "/Users/pelleb/code/consensys/ethereum-did-registry/contracts/EthereumDIDRegistry.sol", - "exportedSymbols": { - "EthereumDIDRegistry": [ - 706 - ] - }, - "id": 707, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "^", - "0.4", - ".4" - ], - "nodeType": "PragmaDirective", - "src": "0:23:0" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 706, - "linearizedBaseContracts": [ - 706 - ], - "name": "EthereumDIDRegistry", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 5, - "name": "owners", - "nodeType": "VariableDeclaration", - "scope": 706, - "src": "59:41:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - }, - "typeName": { - "id": 4, - "keyType": { - "id": 2, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "67:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "59:27:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - }, - "valueType": { - "id": 3, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "78:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 13, - "name": "delegates", - "nodeType": "VariableDeclaration", - "scope": 706, - "src": "104:81:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", - "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" - }, - "typeName": { - "id": 12, - "keyType": { - "id": 6, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "112:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "104:64:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", - "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" - }, - "valueType": { - "id": 11, - "keyType": { - "id": 7, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "131:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "123:44:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(bytes32 => mapping(address => uint256))" - }, - "valueType": { - "id": 10, - "keyType": { - "id": 8, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "150:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "142:24:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "valueType": { - "id": 9, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "161:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 17, - "name": "changed", - "nodeType": "VariableDeclaration", - "scope": 706, - "src": "189:39:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "typeName": { - "id": 16, - "keyType": { - "id": 14, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "197:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "189:24:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "valueType": { - "id": 15, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "208:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 21, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 706, - "src": "232:37:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "typeName": { - "id": 20, - "keyType": { - "id": 18, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "240:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "232:24:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "valueType": { - "id": 19, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "251:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 36, - "nodeType": "Block", - "src": "326:60:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 32, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 28, - "name": "actor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "341:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 30, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 23, - "src": "364:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 29, - "name": "identityOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "350:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", - "typeString": "function (address) view returns (address)" - } - }, - "id": 31, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "350:23:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "341:32:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 27, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 724, - 725 - ], - "referencedDeclaration": 724, - "src": "332:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 33, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "332:42:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 34, - "nodeType": "ExpressionStatement", - "src": "332:42:0" - }, - { - "id": 35, - "nodeType": "PlaceholderStatement", - "src": "380:1:0" - } - ] - }, - "documentation": null, - "id": 37, - "name": "onlyOwner", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 26, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 23, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 37, - "src": "293:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 22, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "293:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 25, - "name": "actor", - "nodeType": "VariableDeclaration", - "scope": 37, - "src": "311:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 24, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "311:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "292:33:0" - }, - "src": "274:112:0", - "visibility": "internal" - }, - { - "anonymous": false, - "documentation": null, - "id": 45, - "name": "DIDOwnerChanged", - "nodeType": "EventDefinition", - "parameters": { - "id": 44, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 39, - "indexed": true, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 45, - "src": "417:24:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 38, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "417:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 41, - "indexed": false, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 45, - "src": "447:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 40, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "447:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 43, - "indexed": false, - "name": "previousChange", - "nodeType": "VariableDeclaration", - "scope": 45, - "src": "466:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 42, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "466:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "411:78:0" - }, - "src": "390:100:0" - }, - { - "anonymous": false, - "documentation": null, - "id": 57, - "name": "DIDDelegateChanged", - "nodeType": "EventDefinition", - "parameters": { - "id": 56, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 47, - "indexed": true, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 57, - "src": "524:24:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 46, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "524:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 49, - "indexed": false, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 57, - "src": "554:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 48, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "554:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 51, - "indexed": false, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 57, - "src": "580:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 50, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "580:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 53, - "indexed": false, - "name": "validTo", - "nodeType": "VariableDeclaration", - "scope": 57, - "src": "602:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 52, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "602:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 55, - "indexed": false, - "name": "previousChange", - "nodeType": "VariableDeclaration", - "scope": 57, - "src": "620:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 54, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "620:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "518:125:0" - }, - "src": "494:150:0" - }, - { - "anonymous": false, - "documentation": null, - "id": 69, - "name": "DIDAttributeChanged", - "nodeType": "EventDefinition", - "parameters": { - "id": 68, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 59, - "indexed": true, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 69, - "src": "679:24:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 58, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "679:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 61, - "indexed": false, - "name": "name", - "nodeType": "VariableDeclaration", - "scope": 69, - "src": "709:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 60, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "709:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 63, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 69, - "src": "727:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 62, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "727:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 65, - "indexed": false, - "name": "validTo", - "nodeType": "VariableDeclaration", - "scope": 69, - "src": "744:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 64, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "744:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 67, - "indexed": false, - "name": "previousChange", - "nodeType": "VariableDeclaration", - "scope": 69, - "src": "762:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 66, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "762:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "673:112:0" - }, - "src": "648:138:0" - }, - { - "body": { - "id": 91, - "nodeType": "Block", - "src": "860:119:0", - "statements": [ - { - "assignments": [ - 77 - ], - "declarations": [ - { - "constant": false, - "id": 77, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 92, - "src": "867:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 76, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "867:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 81, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 78, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5, - "src": "883:6:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 80, - "indexExpression": { - "argumentTypes": null, - "id": 79, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "890:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "883:16:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "867:32:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 84, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 82, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "910:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "307830", - "id": 83, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "919:3:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0x0" - }, - "src": "910:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 88, - "nodeType": "IfStatement", - "src": "906:47:0", - "trueBody": { - "id": 87, - "nodeType": "Block", - "src": "924:29:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 85, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "940:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 75, - "id": 86, - "nodeType": "Return", - "src": "933:12:0" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 89, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "966:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 75, - "id": 90, - "nodeType": "Return", - "src": "959:15:0" - } - ] - }, - "documentation": null, - "id": 92, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "identityOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 72, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 71, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 92, - "src": "813:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 70, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "813:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "812:18:0" - }, - "payable": false, - "returnParameters": { - "id": 75, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 74, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 92, - "src": "851:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 73, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "851:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "850:9:0" - }, - "scope": 706, - "src": "790:189:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 131, - "nodeType": "Block", - "src": "1105:151:0", - "statements": [ - { - "assignments": [ - 108 - ], - "declarations": [ - { - "constant": false, - "id": 108, - "name": "signer", - "nodeType": "VariableDeclaration", - "scope": 132, - "src": "1111:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 107, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1111:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 115, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 110, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 102, - "src": "1138:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 111, - "name": "sigV", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 96, - "src": "1144:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 112, - "name": "sigR", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 98, - "src": "1150:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 113, - "name": "sigS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 100, - "src": "1156:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 109, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 713, - "src": "1128:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1128:33:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1111:50:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 121, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 117, - "name": "signer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 108, - "src": "1175:6:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 119, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 94, - "src": "1199:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 118, - "name": "identityOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "1185:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", - "typeString": "function (address) view returns (address)" - } - }, - "id": 120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1185:23:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1175:33:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 116, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 724, - 725 - ], - "referencedDeclaration": 724, - "src": "1167:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 122, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1167:42:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 123, - "nodeType": "ExpressionStatement", - "src": "1167:42:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1215:17:0", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 124, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21, - "src": "1215:5:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 126, - "indexExpression": { - "argumentTypes": null, - "id": 125, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 94, - "src": "1221:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1215:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 128, - "nodeType": "ExpressionStatement", - "src": "1215:17:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 129, - "name": "signer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 108, - "src": "1245:6:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 106, - "id": 130, - "nodeType": "Return", - "src": "1238:13:0" - } - ] - }, - "documentation": null, - "id": 132, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "checkSignature", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 103, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 94, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 132, - "src": "1007:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 93, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1007:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 96, - "name": "sigV", - "nodeType": "VariableDeclaration", - "scope": 132, - "src": "1025:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 95, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1025:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 98, - "name": "sigR", - "nodeType": "VariableDeclaration", - "scope": 132, - "src": "1037:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 97, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1037:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 100, - "name": "sigS", - "nodeType": "VariableDeclaration", - "scope": 132, - "src": "1051:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 99, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1051:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 102, - "name": "hash", - "nodeType": "VariableDeclaration", - "scope": 132, - "src": "1065:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 101, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1065:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1006:72:0" - }, - "payable": false, - "returnParameters": { - "id": 106, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 105, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 132, - "src": "1096:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 104, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1096:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1095:9:0" - }, - "scope": 706, - "src": "983:273:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 160, - "nodeType": "Block", - "src": "1367:110:0", - "statements": [ - { - "assignments": [ - 144 - ], - "declarations": [ - { - "constant": false, - "id": 144, - "name": "validity", - "nodeType": "VariableDeclaration", - "scope": 161, - "src": "1373:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 143, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "1373:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 154, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 145, - "name": "delegates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 13, - "src": "1389:9:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", - "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" - } - }, - "id": 147, - "indexExpression": { - "argumentTypes": null, - "id": 146, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 134, - "src": "1399:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1389:19:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(bytes32 => mapping(address => uint256))" - } - }, - "id": 151, - "indexExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 149, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "1419:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 148, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "1409:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 150, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1409:23:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1389:44:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 153, - "indexExpression": { - "argumentTypes": null, - "id": 152, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 138, - "src": "1434:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1389:54:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1373:70:0" - }, - { - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 157, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 155, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 144, - "src": "1457:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 156, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "1468:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1457:14:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 158, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1456:16:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 142, - "id": 159, - "nodeType": "Return", - "src": "1449:23:0" - } - ] - }, - "documentation": null, - "id": 161, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "validDelegate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 139, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 134, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 161, - "src": "1283:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 133, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1283:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 136, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 161, - "src": "1301:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 135, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1301:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 138, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 161, - "src": "1323:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 137, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1323:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1282:58:0" - }, - "payable": false, - "returnParameters": { - "id": 142, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 141, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 161, - "src": "1361:4:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 140, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1361:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1360:6:0" - }, - "scope": 706, - "src": "1260:217:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 195, - "nodeType": "Block", - "src": "1589:141:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 178, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 174, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5, - "src": "1595:6:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 176, - "indexExpression": { - "argumentTypes": null, - "id": 175, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 163, - "src": "1602:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1595:16:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 177, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 167, - "src": "1614:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1595:27:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 179, - "nodeType": "ExpressionStatement", - "src": "1595:27:0" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 181, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 163, - "src": "1649:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 182, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 167, - "src": "1659:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 183, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "1669:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 185, - "indexExpression": { - "argumentTypes": null, - "id": 184, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 163, - "src": "1677:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1669:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 180, - "name": "DIDOwnerChanged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 45, - "src": "1633:15:0", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 186, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1633:54:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 187, - "nodeType": "EmitStatement", - "src": "1628:59:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 193, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 188, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "1693:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 190, - "indexExpression": { - "argumentTypes": null, - "id": 189, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 163, - "src": "1701:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1693:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 191, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "1713:5:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 192, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "number", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1713:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1693:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 194, - "nodeType": "ExpressionStatement", - "src": "1693:32:0" - } - ] - }, - "documentation": null, - "id": 196, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 170, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 163, - "src": "1572:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 171, - "name": "actor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 165, - "src": "1582:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 172, - "modifierName": { - "argumentTypes": null, - "id": 169, - "name": "onlyOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "1562:9:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$_t_address_$", - "typeString": "modifier (address,address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "1562:26:0" - } - ], - "name": "changeOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 168, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 163, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 196, - "src": "1502:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 162, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1502:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 165, - "name": "actor", - "nodeType": "VariableDeclaration", - "scope": 196, - "src": "1520:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 164, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1520:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 167, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 196, - "src": "1535:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 166, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1535:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1501:51:0" - }, - "payable": false, - "returnParameters": { - "id": 173, - "nodeType": "ParameterList", - "parameters": [], - "src": "1589:0:0" - }, - "scope": 706, - "src": "1481:249:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 210, - "nodeType": "Block", - "src": "1798:54:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 204, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 198, - "src": "1816:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 205, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 721, - "src": "1826:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 206, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1826:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 207, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 200, - "src": "1838:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 203, - "name": "changeOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 196, - 211 - ], - "referencedDeclaration": 196, - "src": "1804:11:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address,address)" - } - }, - "id": 208, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1804:43:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 209, - "nodeType": "ExpressionStatement", - "src": "1804:43:0" - } - ] - }, - "documentation": null, - "id": 211, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "changeOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 201, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 198, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 211, - "src": "1755:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 197, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1755:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 200, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 211, - "src": "1773:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 199, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1773:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1754:36:0" - }, - "payable": false, - "returnParameters": { - "id": 202, - "nodeType": "ParameterList", - "parameters": [], - "src": "1798:0:0" - }, - "scope": 706, - "src": "1734:118:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 256, - "nodeType": "Block", - "src": "1966:216:0", - "statements": [ - { - "assignments": [ - 225 - ], - "declarations": [ - { - "constant": false, - "id": 225, - "name": "hash", - "nodeType": "VariableDeclaration", - "scope": 257, - "src": "1972:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 224, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1972:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 243, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 228, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2002:4:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 227, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1997:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 229, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1997:10:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 231, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2014:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 230, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2009:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 232, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2009:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 233, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2018:4:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 234, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21, - "src": "2024:5:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 238, - "indexExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 236, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "2044:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 235, - "name": "identityOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "2030:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", - "typeString": "function (address) view returns (address)" - } - }, - "id": 237, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2030:23:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2024:30:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 239, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "2056:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "hexValue": "6368616e67654f776e6572", - "id": 240, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2066:13:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_497a2d03cc86298e55cb693e1ab1fe854c7b50c0aa5aad6229104986e0bf69c9", - "typeString": "literal_string \"changeOwner\"" - }, - "value": "changeOwner" - }, - { - "argumentTypes": null, - "id": 241, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 221, - "src": "2081:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_stringliteral_497a2d03cc86298e55cb693e1ab1fe854c7b50c0aa5aad6229104986e0bf69c9", - "typeString": "literal_string \"changeOwner\"" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 226, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "1987:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 242, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1987:103:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1972:118:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 245, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "2108:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 247, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "2133:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 248, - "name": "sigV", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 215, - "src": "2143:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 249, - "name": "sigR", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 217, - "src": "2149:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 250, - "name": "sigS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 219, - "src": "2155:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 251, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 225, - "src": "2161:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 246, - "name": "checkSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 132, - "src": "2118:14:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" - } - }, - "id": 252, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2118:48:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 253, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 221, - "src": "2168:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 244, - "name": "changeOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 196, - 211 - ], - "referencedDeclaration": 196, - "src": "2096:11:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address,address)" - } - }, - "id": 254, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2096:81:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 255, - "nodeType": "ExpressionStatement", - "src": "2096:81:0" - } - ] - }, - "documentation": null, - "id": 257, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "changeOwnerSigned", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 222, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 213, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 257, - "src": "1883:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 212, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1883:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 215, - "name": "sigV", - "nodeType": "VariableDeclaration", - "scope": 257, - "src": "1901:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 214, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1901:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 217, - "name": "sigR", - "nodeType": "VariableDeclaration", - "scope": 257, - "src": "1913:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 216, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1913:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 219, - "name": "sigS", - "nodeType": "VariableDeclaration", - "scope": 257, - "src": "1927:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 218, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1927:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 221, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 257, - "src": "1941:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 220, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1941:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1882:76:0" - }, - "payable": false, - "returnParameters": { - "id": 223, - "nodeType": "ParameterList", - "parameters": [], - "src": "1966:0:0" - }, - "scope": 706, - "src": "1856:326:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 307, - "nodeType": "Block", - "src": "2331:218:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 286, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 274, - "name": "delegates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 13, - "src": "2337:9:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", - "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" - } - }, - "id": 280, - "indexExpression": { - "argumentTypes": null, - "id": 275, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "2347:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2337:19:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(bytes32 => mapping(address => uint256))" - } - }, - "id": 281, - "indexExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 277, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 263, - "src": "2367:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 276, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "2357:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 278, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2357:23:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2337:44:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 282, - "indexExpression": { - "argumentTypes": null, - "id": 279, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2382:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2337:54:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 285, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 283, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "2394:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 284, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 267, - "src": "2400:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2394:14:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2337:71:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 287, - "nodeType": "ExpressionStatement", - "src": "2337:71:0" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 289, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "2438:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 290, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 263, - "src": "2448:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 291, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2462:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 294, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 292, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "2472:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 293, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 267, - "src": "2478:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2472:14:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 295, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "2488:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 297, - "indexExpression": { - "argumentTypes": null, - "id": 296, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "2496:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2488:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 288, - "name": "DIDDelegateChanged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "2419:18:0", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,bytes32,address,uint256,uint256)" - } - }, - "id": 298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2419:87:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 299, - "nodeType": "EmitStatement", - "src": "2414:92:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 305, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 300, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "2512:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 302, - "indexExpression": { - "argumentTypes": null, - "id": 301, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "2520:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2512:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 303, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "2532:5:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 304, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "number", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2532:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2512:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 306, - "nodeType": "ExpressionStatement", - "src": "2512:32:0" - } - ] - }, - "documentation": null, - "id": 308, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 270, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "2314:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 271, - "name": "actor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 261, - "src": "2324:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 272, - "modifierName": { - "argumentTypes": null, - "id": 269, - "name": "onlyOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "2304:9:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$_t_address_$", - "typeString": "modifier (address,address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "2304:26:0" - } - ], - "name": "addDelegate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 268, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 259, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 308, - "src": "2207:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 258, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2207:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 261, - "name": "actor", - "nodeType": "VariableDeclaration", - "scope": 308, - "src": "2225:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 260, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2225:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 263, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 308, - "src": "2240:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 262, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2240:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 265, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 308, - "src": "2262:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 264, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2262:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 267, - "name": "validity", - "nodeType": "VariableDeclaration", - "scope": 308, - "src": "2280:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 266, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "2280:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2206:88:0" - }, - "payable": false, - "returnParameters": { - "id": 273, - "nodeType": "ParameterList", - "parameters": [], - "src": "2331:0:0" - }, - "scope": 706, - "src": "2186:363:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 328, - "nodeType": "Block", - "src": "2654:78:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 320, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 310, - "src": "2672:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 321, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 721, - "src": "2682:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 322, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2682:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 323, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "2694:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 324, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 314, - "src": "2708:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 325, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "2718:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 319, - "name": "addDelegate", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 308, - 329 - ], - "referencedDeclaration": 308, - "src": "2660:11:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,bytes32,address,uint256)" - } - }, - "id": 326, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2660:67:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 327, - "nodeType": "ExpressionStatement", - "src": "2660:67:0" - } - ] - }, - "documentation": null, - "id": 329, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "addDelegate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 317, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 310, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 329, - "src": "2574:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 309, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2574:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 312, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 329, - "src": "2592:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 311, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2592:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 314, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 329, - "src": "2614:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 313, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2614:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 316, - "name": "validity", - "nodeType": "VariableDeclaration", - "scope": 329, - "src": "2632:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 315, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "2632:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2573:73:0" - }, - "payable": false, - "returnParameters": { - "id": 318, - "nodeType": "ParameterList", - "parameters": [], - "src": "2654:0:0" - }, - "scope": 706, - "src": "2553:179:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 382, - "nodeType": "Block", - "src": "2883:264:0", - "statements": [ - { - "assignments": [ - 347 - ], - "declarations": [ - { - "constant": false, - "id": 347, - "name": "hash", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2889:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 346, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2889:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 367, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 350, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2919:4:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 349, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2914:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 351, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2914:10:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 353, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2931:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 352, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2926:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 354, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2926:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 355, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2935:4:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 356, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21, - "src": "2941:5:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 360, - "indexExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 358, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 331, - "src": "2961:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 357, - "name": "identityOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "2947:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", - "typeString": "function (address) view returns (address)" - } - }, - "id": 359, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2947:23:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2941:30:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 361, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 331, - "src": "2973:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "hexValue": "61646444656c6567617465", - "id": 362, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2983:13:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_debebbcfc53a895bddcfa7790235910fa4c752e6acb9c798d39f50a51a8429a2", - "typeString": "literal_string \"addDelegate\"" - }, - "value": "addDelegate" - }, - { - "argumentTypes": null, - "id": 363, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 339, - "src": "2998:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 364, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 341, - "src": "3012:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 365, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 343, - "src": "3022:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_stringliteral_debebbcfc53a895bddcfa7790235910fa4c752e6acb9c798d39f50a51a8429a2", - "typeString": "literal_string \"addDelegate\"" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 348, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "2904:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 366, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2904:127:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2889:142:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 369, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 331, - "src": "3049:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 371, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 331, - "src": "3074:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 372, - "name": "sigV", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 333, - "src": "3084:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 373, - "name": "sigR", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 335, - "src": "3090:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 374, - "name": "sigS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 337, - "src": "3096:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 375, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 347, - "src": "3102:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 370, - "name": "checkSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 132, - "src": "3059:14:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" - } - }, - "id": 376, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3059:48:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 377, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 339, - "src": "3109:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 378, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 341, - "src": "3123:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 379, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 343, - "src": "3133:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 368, - "name": "addDelegate", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 308, - 329 - ], - "referencedDeclaration": 308, - "src": "3037:11:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,bytes32,address,uint256)" - } - }, - "id": 380, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3037:105:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 381, - "nodeType": "ExpressionStatement", - "src": "3037:105:0" - } - ] - }, - "documentation": null, - "id": 383, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "addDelegateSigned", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 344, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 331, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2763:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 330, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2763:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 333, - "name": "sigV", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2781:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 332, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2781:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 335, - "name": "sigR", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2793:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 334, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2793:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 337, - "name": "sigS", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2807:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 336, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2807:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 339, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2821:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 338, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2821:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 341, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2843:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 340, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2843:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 343, - "name": "validity", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2861:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 342, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "2861:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2762:113:0" - }, - "payable": false, - "returnParameters": { - "id": 345, - "nodeType": "ParameterList", - "parameters": [], - "src": "2883:0:0" - }, - "scope": 706, - "src": "2736:411:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 427, - "nodeType": "Block", - "src": "3284:196:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 408, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 398, - "name": "delegates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 13, - "src": "3290:9:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", - "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" - } - }, - "id": 404, - "indexExpression": { - "argumentTypes": null, - "id": 399, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "3300:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3290:19:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(bytes32 => mapping(address => uint256))" - } - }, - "id": 405, - "indexExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 401, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 389, - "src": "3320:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 400, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "3310:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 402, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3310:23:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3290:44:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 406, - "indexExpression": { - "argumentTypes": null, - "id": 403, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 391, - "src": "3335:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3290:54:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 407, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "3347:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3290:60:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 409, - "nodeType": "ExpressionStatement", - "src": "3290:60:0" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 411, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "3380:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 412, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 389, - "src": "3390:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 413, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 391, - "src": "3404:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 414, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "3414:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 415, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "3419:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 417, - "indexExpression": { - "argumentTypes": null, - "id": 416, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "3427:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3419:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 410, - "name": "DIDDelegateChanged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "3361:18:0", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,bytes32,address,uint256,uint256)" - } - }, - "id": 418, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3361:76:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 419, - "nodeType": "EmitStatement", - "src": "3356:81:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 425, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 420, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "3443:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 422, - "indexExpression": { - "argumentTypes": null, - "id": 421, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "3451:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3443:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 423, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "3463:5:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 424, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "number", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3463:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3443:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 426, - "nodeType": "ExpressionStatement", - "src": "3443:32:0" - } - ] - }, - "documentation": null, - "id": 428, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 394, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "3267:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 395, - "name": "actor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "3277:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 396, - "modifierName": { - "argumentTypes": null, - "id": 393, - "name": "onlyOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "3257:9:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$_t_address_$", - "typeString": "modifier (address,address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "3257:26:0" - } - ], - "name": "revokeDelegate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 392, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 385, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "3175:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 384, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3175:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 387, - "name": "actor", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "3193:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 386, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3193:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 389, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "3208:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 388, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3208:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 391, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "3230:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 390, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3230:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3174:73:0" - }, - "payable": false, - "returnParameters": { - "id": 397, - "nodeType": "ParameterList", - "parameters": [], - "src": "3284:0:0" - }, - "scope": 706, - "src": "3151:329:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 445, - "nodeType": "Block", - "src": "3573:71:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 438, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 430, - "src": "3594:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 439, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 721, - "src": "3604:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 440, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3604:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 441, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 432, - "src": "3616:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 442, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 434, - "src": "3630:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 437, - "name": "revokeDelegate", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 428, - 446 - ], - "referencedDeclaration": 428, - "src": "3579:14:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (address,address,bytes32,address)" - } - }, - "id": 443, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3579:60:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 444, - "nodeType": "ExpressionStatement", - "src": "3579:60:0" - } - ] - }, - "documentation": null, - "id": 446, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "revokeDelegate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 435, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 430, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 446, - "src": "3508:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 429, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3508:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 432, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 446, - "src": "3526:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 431, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3526:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 434, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 446, - "src": "3548:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 433, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3548:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3507:58:0" - }, - "payable": false, - "returnParameters": { - "id": 436, - "nodeType": "ParameterList", - "parameters": [], - "src": "3573:0:0" - }, - "scope": 706, - "src": "3484:160:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 495, - "nodeType": "Block", - "src": "3783:250:0", - "statements": [ - { - "assignments": [ - 462 - ], - "declarations": [ - { - "constant": false, - "id": 462, - "name": "hash", - "nodeType": "VariableDeclaration", - "scope": 496, - "src": "3789:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 461, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3789:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 481, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 465, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3819:4:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 464, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3814:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 466, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3814:10:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 468, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3831:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 467, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3826:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 469, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3826:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 470, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "3835:4:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 471, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21, - "src": "3841:5:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 475, - "indexExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 473, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 448, - "src": "3861:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 472, - "name": "identityOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "3847:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", - "typeString": "function (address) view returns (address)" - } - }, - "id": 474, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3847:23:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3841:30:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 476, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 448, - "src": "3873:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "hexValue": "7265766f6b6544656c6567617465", - "id": 477, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3883:16:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_f63fea8fc7bd9fe254f7933b81fa1716b5a073ddd1aa14e432aa87d81784f86c", - "typeString": "literal_string \"revokeDelegate\"" - }, - "value": "revokeDelegate" - }, - { - "argumentTypes": null, - "id": 478, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 456, - "src": "3901:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 479, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 458, - "src": "3915:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_stringliteral_f63fea8fc7bd9fe254f7933b81fa1716b5a073ddd1aa14e432aa87d81784f86c", - "typeString": "literal_string \"revokeDelegate\"" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 463, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "3804:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 480, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3804:120:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3789:135:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 483, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 448, - "src": "3945:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 485, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 448, - "src": "3970:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 486, - "name": "sigV", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 450, - "src": "3980:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 487, - "name": "sigR", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3986:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 488, - "name": "sigS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 454, - "src": "3992:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 489, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 462, - "src": "3998:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 484, - "name": "checkSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 132, - "src": "3955:14:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" - } - }, - "id": 490, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3955:48:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 491, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 456, - "src": "4005:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 492, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 458, - "src": "4019:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 482, - "name": "revokeDelegate", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 428, - 446 - ], - "referencedDeclaration": 428, - "src": "3930:14:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (address,address,bytes32,address)" - } - }, - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3930:98:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 494, - "nodeType": "ExpressionStatement", - "src": "3930:98:0" - } - ] - }, - "documentation": null, - "id": 496, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "revokeDelegateSigned", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 459, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 448, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 496, - "src": "3678:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 447, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3678:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 450, - "name": "sigV", - "nodeType": "VariableDeclaration", - "scope": 496, - "src": "3696:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 449, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3696:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 452, - "name": "sigR", - "nodeType": "VariableDeclaration", - "scope": 496, - "src": "3708:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 451, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3708:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 454, - "name": "sigS", - "nodeType": "VariableDeclaration", - "scope": 496, - "src": "3722:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 453, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3722:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 456, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 496, - "src": "3736:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 455, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3736:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 458, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 496, - "src": "3758:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 457, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3758:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3677:98:0" - }, - "payable": false, - "returnParameters": { - "id": 460, - "nodeType": "ParameterList", - "parameters": [], - "src": "3783:0:0" - }, - "scope": 706, - "src": "3648:385:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 532, - "nodeType": "Block", - "src": "4171:131:0", - "statements": [ - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 514, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 498, - "src": "4202:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 515, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 502, - "src": "4212:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 516, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 504, - "src": "4218:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 519, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 517, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "4225:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 518, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 506, - "src": "4231:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4225:14:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 520, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "4241:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 522, - "indexExpression": { - "argumentTypes": null, - "id": 521, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 498, - "src": "4249:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4241:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 513, - "name": "DIDAttributeChanged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "4182:19:0", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,bytes32,bytes memory,uint256,uint256)" - } - }, - "id": 523, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4182:77:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 524, - "nodeType": "EmitStatement", - "src": "4177:82:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 530, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 525, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "4265:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 527, - "indexExpression": { - "argumentTypes": null, - "id": 526, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 498, - "src": "4273:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4265:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 528, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "4285:5:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 529, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "number", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4285:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4265:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 531, - "nodeType": "ExpressionStatement", - "src": "4265:32:0" - } - ] - }, - "documentation": null, - "id": 533, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 509, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 498, - "src": "4154:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 510, - "name": "actor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 500, - "src": "4164:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 511, - "modifierName": { - "argumentTypes": null, - "id": 508, - "name": "onlyOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "4144:9:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$_t_address_$", - "typeString": "modifier (address,address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "4144:26:0" - } - ], - "name": "setAttribute", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 507, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 498, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 533, - "src": "4059:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 497, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4059:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 500, - "name": "actor", - "nodeType": "VariableDeclaration", - "scope": 533, - "src": "4077:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 499, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4077:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 502, - "name": "name", - "nodeType": "VariableDeclaration", - "scope": 533, - "src": "4092:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 501, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4092:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 504, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 533, - "src": "4106:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 503, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4106:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 506, - "name": "validity", - "nodeType": "VariableDeclaration", - "scope": 533, - "src": "4119:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 505, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "4119:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4058:76:0" - }, - "payable": false, - "returnParameters": { - "id": 512, - "nodeType": "ParameterList", - "parameters": [], - "src": "4171:0:0" - }, - "scope": 706, - "src": "4037:265:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 553, - "nodeType": "Block", - "src": "4395:68:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 545, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 535, - "src": "4414:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 546, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 721, - "src": "4424:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4424:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 548, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "4436:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 549, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 539, - "src": "4442:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 550, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 541, - "src": "4449:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 544, - "name": "setAttribute", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 533, - 554 - ], - "referencedDeclaration": 533, - "src": "4401:12:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", - "typeString": "function (address,address,bytes32,bytes memory,uint256)" - } - }, - "id": 551, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4401:57:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 552, - "nodeType": "ExpressionStatement", - "src": "4401:57:0" - } - ] - }, - "documentation": null, - "id": 554, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setAttribute", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 542, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 535, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 554, - "src": "4328:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 534, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4328:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 537, - "name": "name", - "nodeType": "VariableDeclaration", - "scope": 554, - "src": "4346:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 536, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4346:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 539, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 554, - "src": "4360:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 538, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4360:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 541, - "name": "validity", - "nodeType": "VariableDeclaration", - "scope": 554, - "src": "4373:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 540, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "4373:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4327:60:0" - }, - "payable": false, - "returnParameters": { - "id": 543, - "nodeType": "ParameterList", - "parameters": [], - "src": "4395:0:0" - }, - "scope": 706, - "src": "4306:157:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 605, - "nodeType": "Block", - "src": "4602:229:0", - "statements": [ - { - "assignments": [ - 572 - ], - "declarations": [ - { - "constant": false, - "id": 572, - "name": "hash", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4608:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 571, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4608:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 590, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 575, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4638:4:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 574, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4633:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 576, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4633:10:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 578, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4650:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 577, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4645:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 579, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4645:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 580, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "4654:4:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 581, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21, - "src": "4660:5:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 583, - "indexExpression": { - "argumentTypes": null, - "id": 582, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4666:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4660:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 584, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4677:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "hexValue": "736574417474726962757465", - "id": 585, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4687:14:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e5bbb0cf2a185ea034bc61efc4cb764352403a5c06c1da63a3fd765abbac4ea6", - "typeString": "literal_string \"setAttribute\"" - }, - "value": "setAttribute" - }, - { - "argumentTypes": null, - "id": 586, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 564, - "src": "4703:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 587, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 566, - "src": "4709:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 588, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 568, - "src": "4716:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_stringliteral_e5bbb0cf2a185ea034bc61efc4cb764352403a5c06c1da63a3fd765abbac4ea6", - "typeString": "literal_string \"setAttribute\"" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 573, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "4623:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4623:102:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4608:117:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 592, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4744:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 594, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4769:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 595, - "name": "sigV", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 558, - "src": "4779:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 596, - "name": "sigR", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 560, - "src": "4785:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 597, - "name": "sigS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 562, - "src": "4791:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 598, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 572, - "src": "4797:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 593, - "name": "checkSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 132, - "src": "4754:14:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" - } - }, - "id": 599, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4754:48:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 600, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 564, - "src": "4804:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 601, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 566, - "src": "4810:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 602, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 568, - "src": "4817:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 591, - "name": "setAttribute", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 533, - 554 - ], - "referencedDeclaration": 533, - "src": "4731:12:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", - "typeString": "function (address,address,bytes32,bytes memory,uint256)" - } - }, - "id": 603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4731:95:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 604, - "nodeType": "ExpressionStatement", - "src": "4731:95:0" - } - ] - }, - "documentation": null, - "id": 606, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setAttributeSigned", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 569, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 556, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4495:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 555, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4495:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 558, - "name": "sigV", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4513:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 557, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4513:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 560, - "name": "sigR", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4525:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 559, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4525:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 562, - "name": "sigS", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4539:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 561, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4539:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 564, - "name": "name", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4553:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 563, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4553:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 566, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4567:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 565, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4567:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 568, - "name": "validity", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4580:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 567, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "4580:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4494:100:0" - }, - "payable": false, - "returnParameters": { - "id": 570, - "nodeType": "ParameterList", - "parameters": [], - "src": "4602:0:0" - }, - "scope": 706, - "src": "4467:364:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 638, - "nodeType": "Block", - "src": "4957:118:0", - "statements": [ - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 622, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 608, - "src": "4988:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 623, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 612, - "src": "4998:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 624, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 614, - "src": "5004:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "hexValue": "30", - "id": 625, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5011:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 626, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "5014:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 628, - "indexExpression": { - "argumentTypes": null, - "id": 627, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 608, - "src": "5022:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5014:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 621, - "name": "DIDAttributeChanged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "4968:19:0", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,bytes32,bytes memory,uint256,uint256)" - } - }, - "id": 629, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4968:64:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 630, - "nodeType": "EmitStatement", - "src": "4963:69:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 631, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "5038:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 633, - "indexExpression": { - "argumentTypes": null, - "id": 632, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 608, - "src": "5046:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5038:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 634, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "5058:5:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 635, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "number", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5058:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5038:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 637, - "nodeType": "ExpressionStatement", - "src": "5038:32:0" - } - ] - }, - "documentation": null, - "id": 639, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 617, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 608, - "src": "4940:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 618, - "name": "actor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 610, - "src": "4950:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 619, - "modifierName": { - "argumentTypes": null, - "id": 616, - "name": "onlyOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "4930:9:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$_t_address_$", - "typeString": "modifier (address,address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "4930:26:0" - } - ], - "name": "revokeAttribute", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 615, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 608, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 639, - "src": "4860:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 607, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4860:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 610, - "name": "actor", - "nodeType": "VariableDeclaration", - "scope": 639, - "src": "4878:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 609, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4878:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 612, - "name": "name", - "nodeType": "VariableDeclaration", - "scope": 639, - "src": "4893:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 611, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4893:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 614, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 639, - "src": "4907:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 613, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4907:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4859:61:0" - }, - "payable": false, - "returnParameters": { - "id": 620, - "nodeType": "ParameterList", - "parameters": [], - "src": "4957:0:0" - }, - "scope": 706, - "src": "4835:240:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 656, - "nodeType": "Block", - "src": "5156:61:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 649, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 641, - "src": "5178:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 650, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 721, - "src": "5188:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5188:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 652, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "5200:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 653, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 645, - "src": "5206:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 648, - "name": "revokeAttribute", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 639, - 657 - ], - "referencedDeclaration": 639, - "src": "5162:15:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,address,bytes32,bytes memory)" - } - }, - "id": 654, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5162:50:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 655, - "nodeType": "ExpressionStatement", - "src": "5162:50:0" - } - ] - }, - "documentation": null, - "id": 657, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "revokeAttribute", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 646, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 641, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 657, - "src": "5104:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 640, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5104:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 643, - "name": "name", - "nodeType": "VariableDeclaration", - "scope": 657, - "src": "5122:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 642, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5122:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 645, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 657, - "src": "5136:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 644, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5136:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5103:45:0" - }, - "payable": false, - "returnParameters": { - "id": 647, - "nodeType": "ParameterList", - "parameters": [], - "src": "5156:0:0" - }, - "scope": 706, - "src": "5079:138:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 704, - "nodeType": "Block", - "src": "5343:216:0", - "statements": [ - { - "assignments": [ - 673 - ], - "declarations": [ - { - "constant": false, - "id": 673, - "name": "hash", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "5349:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 672, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5349:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 690, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 676, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5379:4:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 675, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5374:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 677, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5374:10:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 679, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5391:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 678, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5386:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 680, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5386:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 681, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "5395:4:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 682, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21, - "src": "5401:5:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 684, - "indexExpression": { - "argumentTypes": null, - "id": 683, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 659, - "src": "5407:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5401:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 685, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 659, - "src": "5418:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "hexValue": "7265766f6b65417474726962757465", - "id": 686, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5428:17:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_168e4cc0ad03cc4b6896d89f8a470b9997cd8bbe87ac639c5474674fa958f860", - "typeString": "literal_string \"revokeAttribute\"" - }, - "value": "revokeAttribute" - }, - { - "argumentTypes": null, - "id": 687, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 667, - "src": "5447:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 688, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 669, - "src": "5453:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_stringliteral_168e4cc0ad03cc4b6896d89f8a470b9997cd8bbe87ac639c5474674fa958f860", - "typeString": "literal_string \"revokeAttribute\"" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 674, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "5364:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 689, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5364:95:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5349:110:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 692, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 659, - "src": "5482:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 694, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 659, - "src": "5507:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 695, - "name": "sigV", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 661, - "src": "5517:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 696, - "name": "sigR", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 663, - "src": "5523:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 697, - "name": "sigS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 665, - "src": "5529:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 698, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "5535:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 693, - "name": "checkSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 132, - "src": "5492:14:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" - } - }, - "id": 699, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5492:48:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 700, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 667, - "src": "5542:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 701, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 669, - "src": "5548:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 691, - "name": "revokeAttribute", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 639, - 657 - ], - "referencedDeclaration": 639, - "src": "5466:15:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,address,bytes32,bytes memory)" - } - }, - "id": 702, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5466:88:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 703, - "nodeType": "ExpressionStatement", - "src": "5466:88:0" - } - ] - }, - "documentation": null, - "id": 705, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "revokeAttributeSigned", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 670, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 659, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "5251:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 658, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5251:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 661, - "name": "sigV", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "5269:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 660, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "5269:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 663, - "name": "sigR", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "5281:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 662, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5281:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 665, - "name": "sigS", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "5295:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 664, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5295:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 667, - "name": "name", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "5309:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 666, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5309:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 669, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "5323:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 668, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5323:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5250:85:0" - }, - "payable": false, - "returnParameters": { - "id": 671, - "nodeType": "ParameterList", - "parameters": [], - "src": "5343:0:0" - }, - "scope": 706, - "src": "5220:339:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 707, - "src": "25:5537:0" - } - ], - "src": "0:5563:0" - }, - "legacyAST": { - "absolutePath": "/Users/pelleb/code/consensys/ethereum-did-registry/contracts/EthereumDIDRegistry.sol", - "exportedSymbols": { - "EthereumDIDRegistry": [ - 706 - ] - }, - "id": 707, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "^", - "0.4", - ".4" - ], - "nodeType": "PragmaDirective", - "src": "0:23:0" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 706, - "linearizedBaseContracts": [ - 706 - ], - "name": "EthereumDIDRegistry", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 5, - "name": "owners", - "nodeType": "VariableDeclaration", - "scope": 706, - "src": "59:41:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - }, - "typeName": { - "id": 4, - "keyType": { - "id": 2, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "67:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "59:27:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - }, - "valueType": { - "id": 3, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "78:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 13, - "name": "delegates", - "nodeType": "VariableDeclaration", - "scope": 706, - "src": "104:81:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", - "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" - }, - "typeName": { - "id": 12, - "keyType": { - "id": 6, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "112:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "104:64:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", - "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" - }, - "valueType": { - "id": 11, - "keyType": { - "id": 7, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "131:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "123:44:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(bytes32 => mapping(address => uint256))" - }, - "valueType": { - "id": 10, - "keyType": { - "id": 8, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "150:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "142:24:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "valueType": { - "id": 9, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "161:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 17, - "name": "changed", - "nodeType": "VariableDeclaration", - "scope": 706, - "src": "189:39:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "typeName": { - "id": 16, - "keyType": { - "id": 14, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "197:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "189:24:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "valueType": { - "id": 15, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "208:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 21, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 706, - "src": "232:37:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "typeName": { - "id": 20, - "keyType": { - "id": 18, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "240:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "232:24:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "valueType": { - "id": 19, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "251:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 36, - "nodeType": "Block", - "src": "326:60:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 32, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 28, - "name": "actor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "341:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 30, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 23, - "src": "364:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 29, - "name": "identityOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "350:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", - "typeString": "function (address) view returns (address)" - } - }, - "id": 31, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "350:23:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "341:32:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 27, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 724, - 725 - ], - "referencedDeclaration": 724, - "src": "332:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 33, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "332:42:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 34, - "nodeType": "ExpressionStatement", - "src": "332:42:0" - }, - { - "id": 35, - "nodeType": "PlaceholderStatement", - "src": "380:1:0" - } - ] - }, - "documentation": null, - "id": 37, - "name": "onlyOwner", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 26, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 23, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 37, - "src": "293:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 22, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "293:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 25, - "name": "actor", - "nodeType": "VariableDeclaration", - "scope": 37, - "src": "311:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 24, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "311:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "292:33:0" - }, - "src": "274:112:0", - "visibility": "internal" - }, - { - "anonymous": false, - "documentation": null, - "id": 45, - "name": "DIDOwnerChanged", - "nodeType": "EventDefinition", - "parameters": { - "id": 44, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 39, - "indexed": true, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 45, - "src": "417:24:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 38, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "417:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 41, - "indexed": false, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 45, - "src": "447:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 40, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "447:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 43, - "indexed": false, - "name": "previousChange", - "nodeType": "VariableDeclaration", - "scope": 45, - "src": "466:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 42, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "466:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "411:78:0" - }, - "src": "390:100:0" - }, - { - "anonymous": false, - "documentation": null, - "id": 57, - "name": "DIDDelegateChanged", - "nodeType": "EventDefinition", - "parameters": { - "id": 56, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 47, - "indexed": true, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 57, - "src": "524:24:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 46, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "524:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 49, - "indexed": false, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 57, - "src": "554:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 48, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "554:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 51, - "indexed": false, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 57, - "src": "580:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 50, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "580:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 53, - "indexed": false, - "name": "validTo", - "nodeType": "VariableDeclaration", - "scope": 57, - "src": "602:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 52, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "602:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 55, - "indexed": false, - "name": "previousChange", - "nodeType": "VariableDeclaration", - "scope": 57, - "src": "620:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 54, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "620:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "518:125:0" - }, - "src": "494:150:0" - }, - { - "anonymous": false, - "documentation": null, - "id": 69, - "name": "DIDAttributeChanged", - "nodeType": "EventDefinition", - "parameters": { - "id": 68, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 59, - "indexed": true, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 69, - "src": "679:24:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 58, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "679:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 61, - "indexed": false, - "name": "name", - "nodeType": "VariableDeclaration", - "scope": 69, - "src": "709:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 60, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "709:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 63, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 69, - "src": "727:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 62, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "727:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 65, - "indexed": false, - "name": "validTo", - "nodeType": "VariableDeclaration", - "scope": 69, - "src": "744:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 64, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "744:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 67, - "indexed": false, - "name": "previousChange", - "nodeType": "VariableDeclaration", - "scope": 69, - "src": "762:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 66, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "762:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "673:112:0" - }, - "src": "648:138:0" - }, - { - "body": { - "id": 91, - "nodeType": "Block", - "src": "860:119:0", - "statements": [ - { - "assignments": [ - 77 - ], - "declarations": [ - { - "constant": false, - "id": 77, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 92, - "src": "867:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 76, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "867:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 81, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 78, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5, - "src": "883:6:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 80, - "indexExpression": { - "argumentTypes": null, - "id": 79, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "890:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "883:16:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "867:32:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 84, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 82, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "910:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "307830", - "id": 83, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "919:3:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0x0" - }, - "src": "910:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 88, - "nodeType": "IfStatement", - "src": "906:47:0", - "trueBody": { - "id": 87, - "nodeType": "Block", - "src": "924:29:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 85, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "940:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 75, - "id": 86, - "nodeType": "Return", - "src": "933:12:0" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 89, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "966:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 75, - "id": 90, - "nodeType": "Return", - "src": "959:15:0" - } - ] - }, - "documentation": null, - "id": 92, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "identityOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 72, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 71, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 92, - "src": "813:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 70, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "813:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "812:18:0" - }, - "payable": false, - "returnParameters": { - "id": 75, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 74, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 92, - "src": "851:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 73, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "851:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "850:9:0" - }, - "scope": 706, - "src": "790:189:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 131, - "nodeType": "Block", - "src": "1105:151:0", - "statements": [ - { - "assignments": [ - 108 - ], - "declarations": [ - { - "constant": false, - "id": 108, - "name": "signer", - "nodeType": "VariableDeclaration", - "scope": 132, - "src": "1111:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 107, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1111:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 115, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 110, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 102, - "src": "1138:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 111, - "name": "sigV", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 96, - "src": "1144:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 112, - "name": "sigR", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 98, - "src": "1150:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 113, - "name": "sigS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 100, - "src": "1156:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 109, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 713, - "src": "1128:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1128:33:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1111:50:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 121, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 117, - "name": "signer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 108, - "src": "1175:6:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 119, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 94, - "src": "1199:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 118, - "name": "identityOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "1185:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", - "typeString": "function (address) view returns (address)" - } - }, - "id": 120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1185:23:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1175:33:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 116, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 724, - 725 - ], - "referencedDeclaration": 724, - "src": "1167:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 122, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1167:42:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 123, - "nodeType": "ExpressionStatement", - "src": "1167:42:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1215:17:0", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 124, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21, - "src": "1215:5:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 126, - "indexExpression": { - "argumentTypes": null, - "id": 125, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 94, - "src": "1221:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1215:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 128, - "nodeType": "ExpressionStatement", - "src": "1215:17:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 129, - "name": "signer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 108, - "src": "1245:6:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 106, - "id": 130, - "nodeType": "Return", - "src": "1238:13:0" - } - ] - }, - "documentation": null, - "id": 132, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "checkSignature", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 103, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 94, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 132, - "src": "1007:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 93, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1007:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 96, - "name": "sigV", - "nodeType": "VariableDeclaration", - "scope": 132, - "src": "1025:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 95, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1025:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 98, - "name": "sigR", - "nodeType": "VariableDeclaration", - "scope": 132, - "src": "1037:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 97, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1037:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 100, - "name": "sigS", - "nodeType": "VariableDeclaration", - "scope": 132, - "src": "1051:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 99, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1051:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 102, - "name": "hash", - "nodeType": "VariableDeclaration", - "scope": 132, - "src": "1065:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 101, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1065:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1006:72:0" - }, - "payable": false, - "returnParameters": { - "id": 106, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 105, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 132, - "src": "1096:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 104, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1096:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1095:9:0" - }, - "scope": 706, - "src": "983:273:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 160, - "nodeType": "Block", - "src": "1367:110:0", - "statements": [ - { - "assignments": [ - 144 - ], - "declarations": [ - { - "constant": false, - "id": 144, - "name": "validity", - "nodeType": "VariableDeclaration", - "scope": 161, - "src": "1373:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 143, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "1373:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 154, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 145, - "name": "delegates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 13, - "src": "1389:9:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", - "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" - } - }, - "id": 147, - "indexExpression": { - "argumentTypes": null, - "id": 146, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 134, - "src": "1399:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1389:19:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(bytes32 => mapping(address => uint256))" - } - }, - "id": 151, - "indexExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 149, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "1419:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 148, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "1409:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 150, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1409:23:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1389:44:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 153, - "indexExpression": { - "argumentTypes": null, - "id": 152, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 138, - "src": "1434:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1389:54:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1373:70:0" - }, - { - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 157, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 155, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 144, - "src": "1457:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 156, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "1468:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1457:14:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 158, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1456:16:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 142, - "id": 159, - "nodeType": "Return", - "src": "1449:23:0" - } - ] - }, - "documentation": null, - "id": 161, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "validDelegate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 139, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 134, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 161, - "src": "1283:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 133, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1283:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 136, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 161, - "src": "1301:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 135, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1301:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 138, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 161, - "src": "1323:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 137, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1323:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1282:58:0" - }, - "payable": false, - "returnParameters": { - "id": 142, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 141, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 161, - "src": "1361:4:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 140, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1361:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1360:6:0" - }, - "scope": 706, - "src": "1260:217:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 195, - "nodeType": "Block", - "src": "1589:141:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 178, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 174, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5, - "src": "1595:6:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 176, - "indexExpression": { - "argumentTypes": null, - "id": 175, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 163, - "src": "1602:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1595:16:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 177, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 167, - "src": "1614:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1595:27:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 179, - "nodeType": "ExpressionStatement", - "src": "1595:27:0" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 181, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 163, - "src": "1649:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 182, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 167, - "src": "1659:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 183, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "1669:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 185, - "indexExpression": { - "argumentTypes": null, - "id": 184, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 163, - "src": "1677:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1669:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 180, - "name": "DIDOwnerChanged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 45, - "src": "1633:15:0", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 186, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1633:54:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 187, - "nodeType": "EmitStatement", - "src": "1628:59:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 193, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 188, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "1693:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 190, - "indexExpression": { - "argumentTypes": null, - "id": 189, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 163, - "src": "1701:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1693:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 191, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "1713:5:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 192, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "number", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1713:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1693:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 194, - "nodeType": "ExpressionStatement", - "src": "1693:32:0" - } - ] - }, - "documentation": null, - "id": 196, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 170, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 163, - "src": "1572:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 171, - "name": "actor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 165, - "src": "1582:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 172, - "modifierName": { - "argumentTypes": null, - "id": 169, - "name": "onlyOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "1562:9:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$_t_address_$", - "typeString": "modifier (address,address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "1562:26:0" - } - ], - "name": "changeOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 168, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 163, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 196, - "src": "1502:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 162, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1502:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 165, - "name": "actor", - "nodeType": "VariableDeclaration", - "scope": 196, - "src": "1520:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 164, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1520:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 167, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 196, - "src": "1535:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 166, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1535:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1501:51:0" - }, - "payable": false, - "returnParameters": { - "id": 173, - "nodeType": "ParameterList", - "parameters": [], - "src": "1589:0:0" - }, - "scope": 706, - "src": "1481:249:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 210, - "nodeType": "Block", - "src": "1798:54:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 204, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 198, - "src": "1816:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 205, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 721, - "src": "1826:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 206, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1826:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 207, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 200, - "src": "1838:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 203, - "name": "changeOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 196, - 211 - ], - "referencedDeclaration": 196, - "src": "1804:11:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address,address)" - } - }, - "id": 208, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1804:43:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 209, - "nodeType": "ExpressionStatement", - "src": "1804:43:0" - } - ] - }, - "documentation": null, - "id": 211, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "changeOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 201, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 198, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 211, - "src": "1755:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 197, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1755:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 200, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 211, - "src": "1773:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 199, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1773:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1754:36:0" - }, - "payable": false, - "returnParameters": { - "id": 202, - "nodeType": "ParameterList", - "parameters": [], - "src": "1798:0:0" - }, - "scope": 706, - "src": "1734:118:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 256, - "nodeType": "Block", - "src": "1966:216:0", - "statements": [ - { - "assignments": [ - 225 - ], - "declarations": [ - { - "constant": false, - "id": 225, - "name": "hash", - "nodeType": "VariableDeclaration", - "scope": 257, - "src": "1972:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 224, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1972:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 243, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 228, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2002:4:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 227, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1997:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 229, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1997:10:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 231, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2014:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 230, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2009:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 232, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2009:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 233, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2018:4:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 234, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21, - "src": "2024:5:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 238, - "indexExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 236, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "2044:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 235, - "name": "identityOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "2030:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", - "typeString": "function (address) view returns (address)" - } - }, - "id": 237, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2030:23:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2024:30:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 239, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "2056:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "hexValue": "6368616e67654f776e6572", - "id": 240, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2066:13:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_497a2d03cc86298e55cb693e1ab1fe854c7b50c0aa5aad6229104986e0bf69c9", - "typeString": "literal_string \"changeOwner\"" - }, - "value": "changeOwner" - }, - { - "argumentTypes": null, - "id": 241, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 221, - "src": "2081:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_stringliteral_497a2d03cc86298e55cb693e1ab1fe854c7b50c0aa5aad6229104986e0bf69c9", - "typeString": "literal_string \"changeOwner\"" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 226, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "1987:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 242, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1987:103:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1972:118:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 245, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "2108:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 247, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "2133:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 248, - "name": "sigV", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 215, - "src": "2143:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 249, - "name": "sigR", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 217, - "src": "2149:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 250, - "name": "sigS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 219, - "src": "2155:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 251, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 225, - "src": "2161:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 246, - "name": "checkSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 132, - "src": "2118:14:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" - } - }, - "id": 252, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2118:48:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 253, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 221, - "src": "2168:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 244, - "name": "changeOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 196, - 211 - ], - "referencedDeclaration": 196, - "src": "2096:11:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address,address)" - } - }, - "id": 254, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2096:81:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 255, - "nodeType": "ExpressionStatement", - "src": "2096:81:0" - } - ] - }, - "documentation": null, - "id": 257, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "changeOwnerSigned", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 222, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 213, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 257, - "src": "1883:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 212, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1883:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 215, - "name": "sigV", - "nodeType": "VariableDeclaration", - "scope": 257, - "src": "1901:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 214, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1901:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 217, - "name": "sigR", - "nodeType": "VariableDeclaration", - "scope": 257, - "src": "1913:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 216, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1913:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 219, - "name": "sigS", - "nodeType": "VariableDeclaration", - "scope": 257, - "src": "1927:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 218, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1927:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 221, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 257, - "src": "1941:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 220, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1941:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1882:76:0" - }, - "payable": false, - "returnParameters": { - "id": 223, - "nodeType": "ParameterList", - "parameters": [], - "src": "1966:0:0" - }, - "scope": 706, - "src": "1856:326:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 307, - "nodeType": "Block", - "src": "2331:218:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 286, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 274, - "name": "delegates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 13, - "src": "2337:9:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", - "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" - } - }, - "id": 280, - "indexExpression": { - "argumentTypes": null, - "id": 275, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "2347:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2337:19:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(bytes32 => mapping(address => uint256))" - } - }, - "id": 281, - "indexExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 277, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 263, - "src": "2367:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 276, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "2357:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 278, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2357:23:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2337:44:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 282, - "indexExpression": { - "argumentTypes": null, - "id": 279, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2382:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2337:54:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 285, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 283, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "2394:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 284, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 267, - "src": "2400:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2394:14:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2337:71:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 287, - "nodeType": "ExpressionStatement", - "src": "2337:71:0" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 289, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "2438:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 290, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 263, - "src": "2448:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 291, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2462:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 294, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 292, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "2472:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 293, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 267, - "src": "2478:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2472:14:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 295, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "2488:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 297, - "indexExpression": { - "argumentTypes": null, - "id": 296, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "2496:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2488:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 288, - "name": "DIDDelegateChanged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "2419:18:0", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,bytes32,address,uint256,uint256)" - } - }, - "id": 298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2419:87:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 299, - "nodeType": "EmitStatement", - "src": "2414:92:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 305, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 300, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "2512:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 302, - "indexExpression": { - "argumentTypes": null, - "id": 301, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "2520:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2512:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 303, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "2532:5:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 304, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "number", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2532:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2512:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 306, - "nodeType": "ExpressionStatement", - "src": "2512:32:0" - } - ] - }, - "documentation": null, - "id": 308, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 270, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 259, - "src": "2314:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 271, - "name": "actor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 261, - "src": "2324:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 272, - "modifierName": { - "argumentTypes": null, - "id": 269, - "name": "onlyOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "2304:9:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$_t_address_$", - "typeString": "modifier (address,address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "2304:26:0" - } - ], - "name": "addDelegate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 268, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 259, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 308, - "src": "2207:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 258, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2207:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 261, - "name": "actor", - "nodeType": "VariableDeclaration", - "scope": 308, - "src": "2225:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 260, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2225:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 263, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 308, - "src": "2240:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 262, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2240:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 265, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 308, - "src": "2262:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 264, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2262:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 267, - "name": "validity", - "nodeType": "VariableDeclaration", - "scope": 308, - "src": "2280:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 266, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "2280:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2206:88:0" - }, - "payable": false, - "returnParameters": { - "id": 273, - "nodeType": "ParameterList", - "parameters": [], - "src": "2331:0:0" - }, - "scope": 706, - "src": "2186:363:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 328, - "nodeType": "Block", - "src": "2654:78:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 320, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 310, - "src": "2672:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 321, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 721, - "src": "2682:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 322, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2682:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 323, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "2694:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 324, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 314, - "src": "2708:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 325, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "2718:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 319, - "name": "addDelegate", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 308, - 329 - ], - "referencedDeclaration": 308, - "src": "2660:11:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,bytes32,address,uint256)" - } - }, - "id": 326, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2660:67:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 327, - "nodeType": "ExpressionStatement", - "src": "2660:67:0" - } - ] - }, - "documentation": null, - "id": 329, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "addDelegate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 317, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 310, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 329, - "src": "2574:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 309, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2574:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 312, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 329, - "src": "2592:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 311, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2592:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 314, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 329, - "src": "2614:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 313, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2614:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 316, - "name": "validity", - "nodeType": "VariableDeclaration", - "scope": 329, - "src": "2632:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 315, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "2632:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2573:73:0" - }, - "payable": false, - "returnParameters": { - "id": 318, - "nodeType": "ParameterList", - "parameters": [], - "src": "2654:0:0" - }, - "scope": 706, - "src": "2553:179:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 382, - "nodeType": "Block", - "src": "2883:264:0", - "statements": [ - { - "assignments": [ - 347 - ], - "declarations": [ - { - "constant": false, - "id": 347, - "name": "hash", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2889:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 346, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2889:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 367, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 350, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2919:4:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 349, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2914:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 351, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2914:10:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 353, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2931:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 352, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2926:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 354, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2926:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 355, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2935:4:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 356, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21, - "src": "2941:5:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 360, - "indexExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 358, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 331, - "src": "2961:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 357, - "name": "identityOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "2947:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", - "typeString": "function (address) view returns (address)" - } - }, - "id": 359, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2947:23:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2941:30:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 361, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 331, - "src": "2973:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "hexValue": "61646444656c6567617465", - "id": 362, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2983:13:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_debebbcfc53a895bddcfa7790235910fa4c752e6acb9c798d39f50a51a8429a2", - "typeString": "literal_string \"addDelegate\"" - }, - "value": "addDelegate" - }, - { - "argumentTypes": null, - "id": 363, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 339, - "src": "2998:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 364, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 341, - "src": "3012:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 365, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 343, - "src": "3022:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_stringliteral_debebbcfc53a895bddcfa7790235910fa4c752e6acb9c798d39f50a51a8429a2", - "typeString": "literal_string \"addDelegate\"" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 348, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "2904:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 366, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2904:127:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2889:142:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 369, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 331, - "src": "3049:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 371, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 331, - "src": "3074:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 372, - "name": "sigV", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 333, - "src": "3084:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 373, - "name": "sigR", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 335, - "src": "3090:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 374, - "name": "sigS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 337, - "src": "3096:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 375, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 347, - "src": "3102:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 370, - "name": "checkSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 132, - "src": "3059:14:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" - } - }, - "id": 376, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3059:48:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 377, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 339, - "src": "3109:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 378, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 341, - "src": "3123:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 379, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 343, - "src": "3133:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 368, - "name": "addDelegate", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 308, - 329 - ], - "referencedDeclaration": 308, - "src": "3037:11:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,bytes32,address,uint256)" - } - }, - "id": 380, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3037:105:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 381, - "nodeType": "ExpressionStatement", - "src": "3037:105:0" - } - ] - }, - "documentation": null, - "id": 383, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "addDelegateSigned", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 344, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 331, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2763:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 330, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2763:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 333, - "name": "sigV", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2781:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 332, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2781:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 335, - "name": "sigR", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2793:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 334, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2793:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 337, - "name": "sigS", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2807:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 336, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2807:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 339, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2821:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 338, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2821:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 341, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2843:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 340, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2843:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 343, - "name": "validity", - "nodeType": "VariableDeclaration", - "scope": 383, - "src": "2861:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 342, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "2861:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2762:113:0" - }, - "payable": false, - "returnParameters": { - "id": 345, - "nodeType": "ParameterList", - "parameters": [], - "src": "2883:0:0" - }, - "scope": 706, - "src": "2736:411:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 427, - "nodeType": "Block", - "src": "3284:196:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 408, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 398, - "name": "delegates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 13, - "src": "3290:9:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", - "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" - } - }, - "id": 404, - "indexExpression": { - "argumentTypes": null, - "id": 399, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "3300:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3290:19:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(bytes32 => mapping(address => uint256))" - } - }, - "id": 405, - "indexExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 401, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 389, - "src": "3320:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 400, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "3310:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 402, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3310:23:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3290:44:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 406, - "indexExpression": { - "argumentTypes": null, - "id": 403, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 391, - "src": "3335:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3290:54:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 407, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "3347:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3290:60:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 409, - "nodeType": "ExpressionStatement", - "src": "3290:60:0" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 411, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "3380:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 412, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 389, - "src": "3390:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 413, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 391, - "src": "3404:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 414, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "3414:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 415, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "3419:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 417, - "indexExpression": { - "argumentTypes": null, - "id": 416, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "3427:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3419:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 410, - "name": "DIDDelegateChanged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "3361:18:0", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,bytes32,address,uint256,uint256)" - } - }, - "id": 418, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3361:76:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 419, - "nodeType": "EmitStatement", - "src": "3356:81:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 425, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 420, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "3443:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 422, - "indexExpression": { - "argumentTypes": null, - "id": 421, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "3451:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3443:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 423, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "3463:5:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 424, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "number", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3463:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3443:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 426, - "nodeType": "ExpressionStatement", - "src": "3443:32:0" - } - ] - }, - "documentation": null, - "id": 428, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 394, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "3267:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 395, - "name": "actor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "3277:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 396, - "modifierName": { - "argumentTypes": null, - "id": 393, - "name": "onlyOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "3257:9:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$_t_address_$", - "typeString": "modifier (address,address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "3257:26:0" - } - ], - "name": "revokeDelegate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 392, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 385, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "3175:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 384, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3175:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 387, - "name": "actor", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "3193:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 386, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3193:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 389, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "3208:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 388, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3208:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 391, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "3230:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 390, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3230:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3174:73:0" - }, - "payable": false, - "returnParameters": { - "id": 397, - "nodeType": "ParameterList", - "parameters": [], - "src": "3284:0:0" - }, - "scope": 706, - "src": "3151:329:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 445, - "nodeType": "Block", - "src": "3573:71:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 438, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 430, - "src": "3594:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 439, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 721, - "src": "3604:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 440, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3604:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 441, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 432, - "src": "3616:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 442, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 434, - "src": "3630:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 437, - "name": "revokeDelegate", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 428, - 446 - ], - "referencedDeclaration": 428, - "src": "3579:14:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (address,address,bytes32,address)" - } - }, - "id": 443, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3579:60:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 444, - "nodeType": "ExpressionStatement", - "src": "3579:60:0" - } - ] - }, - "documentation": null, - "id": 446, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "revokeDelegate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 435, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 430, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 446, - "src": "3508:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 429, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3508:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 432, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 446, - "src": "3526:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 431, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3526:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 434, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 446, - "src": "3548:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 433, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3548:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3507:58:0" - }, - "payable": false, - "returnParameters": { - "id": 436, - "nodeType": "ParameterList", - "parameters": [], - "src": "3573:0:0" - }, - "scope": 706, - "src": "3484:160:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 495, - "nodeType": "Block", - "src": "3783:250:0", - "statements": [ - { - "assignments": [ - 462 - ], - "declarations": [ - { - "constant": false, - "id": 462, - "name": "hash", - "nodeType": "VariableDeclaration", - "scope": 496, - "src": "3789:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 461, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3789:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 481, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 465, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3819:4:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 464, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3814:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 466, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3814:10:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 468, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3831:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 467, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3826:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 469, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3826:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 470, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "3835:4:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 471, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21, - "src": "3841:5:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 475, - "indexExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 473, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 448, - "src": "3861:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 472, - "name": "identityOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "3847:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", - "typeString": "function (address) view returns (address)" - } - }, - "id": 474, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3847:23:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3841:30:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 476, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 448, - "src": "3873:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "hexValue": "7265766f6b6544656c6567617465", - "id": 477, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3883:16:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_f63fea8fc7bd9fe254f7933b81fa1716b5a073ddd1aa14e432aa87d81784f86c", - "typeString": "literal_string \"revokeDelegate\"" - }, - "value": "revokeDelegate" - }, - { - "argumentTypes": null, - "id": 478, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 456, - "src": "3901:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 479, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 458, - "src": "3915:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_stringliteral_f63fea8fc7bd9fe254f7933b81fa1716b5a073ddd1aa14e432aa87d81784f86c", - "typeString": "literal_string \"revokeDelegate\"" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 463, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "3804:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 480, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3804:120:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3789:135:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 483, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 448, - "src": "3945:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 485, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 448, - "src": "3970:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 486, - "name": "sigV", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 450, - "src": "3980:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 487, - "name": "sigR", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3986:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 488, - "name": "sigS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 454, - "src": "3992:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 489, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 462, - "src": "3998:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 484, - "name": "checkSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 132, - "src": "3955:14:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" - } - }, - "id": 490, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3955:48:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 491, - "name": "delegateType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 456, - "src": "4005:12:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 492, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 458, - "src": "4019:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 482, - "name": "revokeDelegate", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 428, - 446 - ], - "referencedDeclaration": 428, - "src": "3930:14:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (address,address,bytes32,address)" - } - }, - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3930:98:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 494, - "nodeType": "ExpressionStatement", - "src": "3930:98:0" - } - ] - }, - "documentation": null, - "id": 496, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "revokeDelegateSigned", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 459, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 448, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 496, - "src": "3678:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 447, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3678:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 450, - "name": "sigV", - "nodeType": "VariableDeclaration", - "scope": 496, - "src": "3696:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 449, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3696:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 452, - "name": "sigR", - "nodeType": "VariableDeclaration", - "scope": 496, - "src": "3708:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 451, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3708:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 454, - "name": "sigS", - "nodeType": "VariableDeclaration", - "scope": 496, - "src": "3722:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 453, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3722:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 456, - "name": "delegateType", - "nodeType": "VariableDeclaration", - "scope": 496, - "src": "3736:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 455, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3736:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 458, - "name": "delegate", - "nodeType": "VariableDeclaration", - "scope": 496, - "src": "3758:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 457, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3758:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3677:98:0" - }, - "payable": false, - "returnParameters": { - "id": 460, - "nodeType": "ParameterList", - "parameters": [], - "src": "3783:0:0" - }, - "scope": 706, - "src": "3648:385:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 532, - "nodeType": "Block", - "src": "4171:131:0", - "statements": [ - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 514, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 498, - "src": "4202:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 515, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 502, - "src": "4212:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 516, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 504, - "src": "4218:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 519, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 517, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 723, - "src": "4225:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 518, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 506, - "src": "4231:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4225:14:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 520, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "4241:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 522, - "indexExpression": { - "argumentTypes": null, - "id": 521, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 498, - "src": "4249:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4241:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 513, - "name": "DIDAttributeChanged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "4182:19:0", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,bytes32,bytes memory,uint256,uint256)" - } - }, - "id": 523, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4182:77:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 524, - "nodeType": "EmitStatement", - "src": "4177:82:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 530, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 525, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "4265:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 527, - "indexExpression": { - "argumentTypes": null, - "id": 526, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 498, - "src": "4273:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4265:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 528, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "4285:5:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 529, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "number", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4285:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4265:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 531, - "nodeType": "ExpressionStatement", - "src": "4265:32:0" - } - ] - }, - "documentation": null, - "id": 533, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 509, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 498, - "src": "4154:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 510, - "name": "actor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 500, - "src": "4164:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 511, - "modifierName": { - "argumentTypes": null, - "id": 508, - "name": "onlyOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "4144:9:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$_t_address_$", - "typeString": "modifier (address,address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "4144:26:0" - } - ], - "name": "setAttribute", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 507, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 498, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 533, - "src": "4059:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 497, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4059:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 500, - "name": "actor", - "nodeType": "VariableDeclaration", - "scope": 533, - "src": "4077:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 499, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4077:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 502, - "name": "name", - "nodeType": "VariableDeclaration", - "scope": 533, - "src": "4092:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 501, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4092:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 504, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 533, - "src": "4106:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 503, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4106:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 506, - "name": "validity", - "nodeType": "VariableDeclaration", - "scope": 533, - "src": "4119:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 505, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "4119:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4058:76:0" - }, - "payable": false, - "returnParameters": { - "id": 512, - "nodeType": "ParameterList", - "parameters": [], - "src": "4171:0:0" - }, - "scope": 706, - "src": "4037:265:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 553, - "nodeType": "Block", - "src": "4395:68:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 545, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 535, - "src": "4414:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 546, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 721, - "src": "4424:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4424:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 548, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "4436:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 549, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 539, - "src": "4442:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 550, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 541, - "src": "4449:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 544, - "name": "setAttribute", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 533, - 554 - ], - "referencedDeclaration": 533, - "src": "4401:12:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", - "typeString": "function (address,address,bytes32,bytes memory,uint256)" - } - }, - "id": 551, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4401:57:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 552, - "nodeType": "ExpressionStatement", - "src": "4401:57:0" - } - ] - }, - "documentation": null, - "id": 554, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setAttribute", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 542, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 535, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 554, - "src": "4328:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 534, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4328:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 537, - "name": "name", - "nodeType": "VariableDeclaration", - "scope": 554, - "src": "4346:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 536, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4346:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 539, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 554, - "src": "4360:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 538, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4360:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 541, - "name": "validity", - "nodeType": "VariableDeclaration", - "scope": 554, - "src": "4373:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 540, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "4373:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4327:60:0" - }, - "payable": false, - "returnParameters": { - "id": 543, - "nodeType": "ParameterList", - "parameters": [], - "src": "4395:0:0" - }, - "scope": 706, - "src": "4306:157:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 605, - "nodeType": "Block", - "src": "4602:229:0", - "statements": [ - { - "assignments": [ - 572 - ], - "declarations": [ - { - "constant": false, - "id": 572, - "name": "hash", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4608:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 571, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4608:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 590, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 575, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4638:4:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 574, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4633:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 576, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4633:10:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 578, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4650:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 577, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4645:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 579, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4645:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 580, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "4654:4:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 581, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21, - "src": "4660:5:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 583, - "indexExpression": { - "argumentTypes": null, - "id": 582, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4666:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4660:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 584, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4677:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "hexValue": "736574417474726962757465", - "id": 585, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4687:14:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e5bbb0cf2a185ea034bc61efc4cb764352403a5c06c1da63a3fd765abbac4ea6", - "typeString": "literal_string \"setAttribute\"" - }, - "value": "setAttribute" - }, - { - "argumentTypes": null, - "id": 586, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 564, - "src": "4703:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 587, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 566, - "src": "4709:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 588, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 568, - "src": "4716:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_stringliteral_e5bbb0cf2a185ea034bc61efc4cb764352403a5c06c1da63a3fd765abbac4ea6", - "typeString": "literal_string \"setAttribute\"" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 573, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "4623:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4623:102:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4608:117:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 592, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4744:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 594, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4769:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 595, - "name": "sigV", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 558, - "src": "4779:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 596, - "name": "sigR", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 560, - "src": "4785:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 597, - "name": "sigS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 562, - "src": "4791:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 598, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 572, - "src": "4797:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 593, - "name": "checkSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 132, - "src": "4754:14:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" - } - }, - "id": 599, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4754:48:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 600, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 564, - "src": "4804:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 601, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 566, - "src": "4810:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 602, - "name": "validity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 568, - "src": "4817:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 591, - "name": "setAttribute", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 533, - 554 - ], - "referencedDeclaration": 533, - "src": "4731:12:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", - "typeString": "function (address,address,bytes32,bytes memory,uint256)" - } - }, - "id": 603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4731:95:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 604, - "nodeType": "ExpressionStatement", - "src": "4731:95:0" - } - ] - }, - "documentation": null, - "id": 606, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setAttributeSigned", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 569, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 556, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4495:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 555, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4495:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 558, - "name": "sigV", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4513:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 557, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4513:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 560, - "name": "sigR", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4525:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 559, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4525:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 562, - "name": "sigS", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4539:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 561, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4539:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 564, - "name": "name", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4553:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 563, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4553:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 566, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4567:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 565, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4567:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 568, - "name": "validity", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "4580:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 567, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "4580:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4494:100:0" - }, - "payable": false, - "returnParameters": { - "id": 570, - "nodeType": "ParameterList", - "parameters": [], - "src": "4602:0:0" - }, - "scope": 706, - "src": "4467:364:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 638, - "nodeType": "Block", - "src": "4957:118:0", - "statements": [ - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 622, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 608, - "src": "4988:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 623, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 612, - "src": "4998:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 624, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 614, - "src": "5004:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "hexValue": "30", - "id": 625, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5011:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 626, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "5014:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 628, - "indexExpression": { - "argumentTypes": null, - "id": 627, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 608, - "src": "5022:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5014:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 621, - "name": "DIDAttributeChanged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "4968:19:0", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,bytes32,bytes memory,uint256,uint256)" - } - }, - "id": 629, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4968:64:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 630, - "nodeType": "EmitStatement", - "src": "4963:69:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 631, - "name": "changed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 17, - "src": "5038:7:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 633, - "indexExpression": { - "argumentTypes": null, - "id": 632, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 608, - "src": "5046:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5038:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 634, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 711, - "src": "5058:5:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 635, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "number", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5058:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5038:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 637, - "nodeType": "ExpressionStatement", - "src": "5038:32:0" - } - ] - }, - "documentation": null, - "id": 639, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 617, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 608, - "src": "4940:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 618, - "name": "actor", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 610, - "src": "4950:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 619, - "modifierName": { - "argumentTypes": null, - "id": 616, - "name": "onlyOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "4930:9:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$_t_address_$", - "typeString": "modifier (address,address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "4930:26:0" - } - ], - "name": "revokeAttribute", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 615, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 608, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 639, - "src": "4860:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 607, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4860:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 610, - "name": "actor", - "nodeType": "VariableDeclaration", - "scope": 639, - "src": "4878:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 609, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4878:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 612, - "name": "name", - "nodeType": "VariableDeclaration", - "scope": 639, - "src": "4893:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 611, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4893:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 614, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 639, - "src": "4907:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 613, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4907:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4859:61:0" - }, - "payable": false, - "returnParameters": { - "id": 620, - "nodeType": "ParameterList", - "parameters": [], - "src": "4957:0:0" - }, - "scope": 706, - "src": "4835:240:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 656, - "nodeType": "Block", - "src": "5156:61:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 649, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 641, - "src": "5178:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 650, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 721, - "src": "5188:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5188:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 652, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "5200:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 653, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 645, - "src": "5206:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 648, - "name": "revokeAttribute", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 639, - 657 - ], - "referencedDeclaration": 639, - "src": "5162:15:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,address,bytes32,bytes memory)" - } - }, - "id": 654, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5162:50:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 655, - "nodeType": "ExpressionStatement", - "src": "5162:50:0" - } - ] - }, - "documentation": null, - "id": 657, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "revokeAttribute", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 646, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 641, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 657, - "src": "5104:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 640, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5104:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 643, - "name": "name", - "nodeType": "VariableDeclaration", - "scope": 657, - "src": "5122:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 642, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5122:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 645, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 657, - "src": "5136:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 644, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5136:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5103:45:0" - }, - "payable": false, - "returnParameters": { - "id": 647, - "nodeType": "ParameterList", - "parameters": [], - "src": "5156:0:0" - }, - "scope": 706, - "src": "5079:138:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 704, - "nodeType": "Block", - "src": "5343:216:0", - "statements": [ - { - "assignments": [ - 673 - ], - "declarations": [ - { - "constant": false, - "id": 673, - "name": "hash", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "5349:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 672, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5349:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 690, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 676, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5379:4:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 675, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5374:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 677, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5374:10:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 679, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5391:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 678, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5386:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 680, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5386:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 681, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "5395:4:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 682, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21, - "src": "5401:5:0", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 684, - "indexExpression": { - "argumentTypes": null, - "id": 683, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 659, - "src": "5407:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5401:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 685, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 659, - "src": "5418:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "hexValue": "7265766f6b65417474726962757465", - "id": 686, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5428:17:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_168e4cc0ad03cc4b6896d89f8a470b9997cd8bbe87ac639c5474674fa958f860", - "typeString": "literal_string \"revokeAttribute\"" - }, - "value": "revokeAttribute" - }, - { - "argumentTypes": null, - "id": 687, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 667, - "src": "5447:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 688, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 669, - "src": "5453:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", - "typeString": "contract EthereumDIDRegistry" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_stringliteral_168e4cc0ad03cc4b6896d89f8a470b9997cd8bbe87ac639c5474674fa958f860", - "typeString": "literal_string \"revokeAttribute\"" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 674, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 715, - "src": "5364:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 689, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5364:95:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5349:110:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 692, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 659, - "src": "5482:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 694, - "name": "identity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 659, - "src": "5507:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 695, - "name": "sigV", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 661, - "src": "5517:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 696, - "name": "sigR", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 663, - "src": "5523:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 697, - "name": "sigS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 665, - "src": "5529:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 698, - "name": "hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 673, - "src": "5535:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 693, - "name": "checkSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 132, - "src": "5492:14:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" - } - }, - "id": 699, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5492:48:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 700, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 667, - "src": "5542:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 701, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 669, - "src": "5548:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 691, - "name": "revokeAttribute", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 639, - 657 - ], - "referencedDeclaration": 639, - "src": "5466:15:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,address,bytes32,bytes memory)" - } - }, - "id": 702, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5466:88:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 703, - "nodeType": "ExpressionStatement", - "src": "5466:88:0" - } - ] - }, - "documentation": null, - "id": 705, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "revokeAttributeSigned", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 670, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 659, - "name": "identity", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "5251:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 658, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5251:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 661, - "name": "sigV", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "5269:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 660, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "5269:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 663, - "name": "sigR", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "5281:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 662, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5281:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 665, - "name": "sigS", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "5295:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 664, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5295:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 667, - "name": "name", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "5309:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 666, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5309:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 669, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 705, - "src": "5323:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 668, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5323:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5250:85:0" - }, - "payable": false, - "returnParameters": { - "id": 671, - "nodeType": "ParameterList", - "parameters": [], - "src": "5343:0:0" - }, - "scope": 706, - "src": "5220:339:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 707, - "src": "25:5537:0" - } - ], - "src": "0:5563:0" - }, - "compiler": { - "name": "solc", - "version": "0.4.24+commit.e67f0147.Emscripten.clang" - }, - "networks": { - "1": { - "events": {}, - "links": {}, - "address": "0xdca7ef03e98e0dc2b855be647c39abe984fcf21b" - }, - "3": { - "events": {}, - "links": {}, - "address": "0xdca7ef03e98e0dc2b855be647c39abe984fcf21b" - }, - "4": { - "events": {}, - "links": {}, - "address": "0xdca7ef03e98e0dc2b855be647c39abe984fcf21b" - }, - "30": { - "events": {}, - "links": {}, - "address": "0xdca7ef03e98e0dc2b855be647c39abe984fcf21b" - }, - "31": { - "events": {}, - "links": {}, - "address": "0xdca7ef03e98e0dc2b855be647c39abe984fcf21b" - }, - "42": { - "events": {}, - "links": {}, - "address": "0xdca7ef03e98e0dc2b855be647c39abe984fcf21b" - }, - "83584648538": { - "events": {}, - "links": {}, - "address": "0x05cc574b19a3c11308f761b3d7263bd8608bc532" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2019-06-00T00:00:00.000Z" -} \ No newline at end of file diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json deleted file mode 100644 index c56fef2..0000000 --- a/build/contracts/Migrations.json +++ /dev/null @@ -1,827 +0,0 @@ -{ - "contractName": "Migrations", - "abi": [ - { - "constant": true, - "inputs": [], - "name": "last_completed_migration", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "constant": false, - "inputs": [ - { - "name": "completed", - "type": "uint256" - } - ], - "name": "setCompleted", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "new_address", - "type": "address" - } - ], - "name": "upgrade", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102db8061005e6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a7230582022dcdda1046a7bce847f32988fe9e1f669a1c62555f3414df80d3db7fd00dd330029", - "deployedBytecode": "0x606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a7230582022dcdda1046a7bce847f32988fe9e1f669a1c62555f3414df80d3db7fd00dd330029", - "sourceMap": "26:488:1:-;;;178:58;;;;;;;;221:10;213:5;;:18;;;;;;;;;;;;;;;;;;26:488;;;;;;", - "deployedSourceMap": "26:488:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;347:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;74:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;240:103;;;;;;;;;;;;;;;;;;;;;;;;;;347:165;409:19;161:5;;;;;;;;;;;147:19;;:10;:19;;;143:26;;;442:11;409:45;;460:8;:21;;;482:24;;460:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;143:26;347:165;;:::o;74:36::-;;;;:::o;50:20::-;;;;;;;;;;;;;:::o;240:103::-;161:5;;;;;;;;;;;147:19;;:10;:19;;;143:26;;;329:9;302:24;:36;;;;143:26;240:103;:::o", - "source": "pragma solidity ^0.4.17;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n function Migrations() public {\n owner = msg.sender;\n }\n\n function setCompleted(uint completed) public restricted {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address) public restricted {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n", - "sourcePath": "/Users/pelleb/code/consensys/ethereum-did-registry/contracts/Migrations.sol", - "ast": { - "attributes": { - "absolutePath": "/Users/pelleb/code/consensys/ethereum-did-registry/contracts/Migrations.sol", - "exportedSymbols": { - "Migrations": [ - 159 - ] - } - }, - "children": [ - { - "attributes": { - "literals": [ - "solidity", - "^", - "0.4", - ".17" - ] - }, - "id": 104, - "name": "PragmaDirective", - "src": "0:24:1" - }, - { - "attributes": { - "baseContracts": [ - null - ], - "contractDependencies": [ - null - ], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 159 - ], - "name": "Migrations", - "scope": 160 - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "owner", - "scope": 159, - "stateVariable": true, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 105, - "name": "ElementaryTypeName", - "src": "50:7:1" - } - ], - "id": 106, - "name": "VariableDeclaration", - "src": "50:20:1" - }, - { - "attributes": { - "constant": false, - "name": "last_completed_migration", - "scope": 159, - "stateVariable": true, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 107, - "name": "ElementaryTypeName", - "src": "74:4:1" - } - ], - "id": 108, - "name": "VariableDeclaration", - "src": "74:36:1" - }, - { - "attributes": { - "name": "restricted", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 109, - "name": "ParameterList", - "src": "134:2:1" - }, - { - "children": [ - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 171, - "type": "msg", - "value": "msg" - }, - "id": 110, - "name": "Identifier", - "src": "147:3:1" - } - ], - "id": 111, - "name": "MemberAccess", - "src": "147:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 106, - "type": "address", - "value": "owner" - }, - "id": 112, - "name": "Identifier", - "src": "161:5:1" - } - ], - "id": 113, - "name": "BinaryOperation", - "src": "147:19:1" - }, - { - "id": 114, - "name": "PlaceholderStatement", - "src": "168:1:1" - } - ], - "id": 115, - "name": "IfStatement", - "src": "143:26:1" - } - ], - "id": 116, - "name": "Block", - "src": "137:37:1" - } - ], - "id": 117, - "name": "ModifierDefinition", - "src": "115:59:1" - }, - { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": true, - "modifiers": [ - null - ], - "name": "Migrations", - "payable": false, - "scope": 159, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 118, - "name": "ParameterList", - "src": "197:2:1" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 119, - "name": "ParameterList", - "src": "207:0:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 106, - "type": "address", - "value": "owner" - }, - "id": 120, - "name": "Identifier", - "src": "213:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 171, - "type": "msg", - "value": "msg" - }, - "id": 121, - "name": "Identifier", - "src": "221:3:1" - } - ], - "id": 122, - "name": "MemberAccess", - "src": "221:10:1" - } - ], - "id": 123, - "name": "Assignment", - "src": "213:18:1" - } - ], - "id": 124, - "name": "ExpressionStatement", - "src": "213:18:1" - } - ], - "id": 125, - "name": "Block", - "src": "207:29:1" - } - ], - "id": 126, - "name": "FunctionDefinition", - "src": "178:58:1" - }, - { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "name": "setCompleted", - "payable": false, - "scope": 159, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "completed", - "scope": 138, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 127, - "name": "ElementaryTypeName", - "src": "262:4:1" - } - ], - "id": 128, - "name": "VariableDeclaration", - "src": "262:14:1" - } - ], - "id": 129, - "name": "ParameterList", - "src": "261:16:1" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 132, - "name": "ParameterList", - "src": "296:0:1" - }, - { - "attributes": { - "arguments": [ - null - ] - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 117, - "type": "modifier ()", - "value": "restricted" - }, - "id": 130, - "name": "Identifier", - "src": "285:10:1" - } - ], - "id": 131, - "name": "ModifierInvocation", - "src": "285:10:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 108, - "type": "uint256", - "value": "last_completed_migration" - }, - "id": 133, - "name": "Identifier", - "src": "302:24:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 128, - "type": "uint256", - "value": "completed" - }, - "id": 134, - "name": "Identifier", - "src": "329:9:1" - } - ], - "id": 135, - "name": "Assignment", - "src": "302:36:1" - } - ], - "id": 136, - "name": "ExpressionStatement", - "src": "302:36:1" - } - ], - "id": 137, - "name": "Block", - "src": "296:47:1" - } - ], - "id": 138, - "name": "FunctionDefinition", - "src": "240:103:1" - }, - { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "name": "upgrade", - "payable": false, - "scope": 159, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "new_address", - "scope": 158, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 139, - "name": "ElementaryTypeName", - "src": "364:7:1" - } - ], - "id": 140, - "name": "VariableDeclaration", - "src": "364:19:1" - } - ], - "id": 141, - "name": "ParameterList", - "src": "363:21:1" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 144, - "name": "ParameterList", - "src": "403:0:1" - }, - { - "attributes": { - "arguments": [ - null - ] - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 117, - "type": "modifier ()", - "value": "restricted" - }, - "id": 142, - "name": "Identifier", - "src": "392:10:1" - } - ], - "id": 143, - "name": "ModifierInvocation", - "src": "392:10:1" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 146 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "upgraded", - "scope": 158, - "stateVariable": false, - "storageLocation": "default", - "type": "contract Migrations", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Migrations", - "referencedDeclaration": 159, - "type": "contract Migrations" - }, - "id": 145, - "name": "UserDefinedTypeName", - "src": "409:10:1" - } - ], - "id": 146, - "name": "VariableDeclaration", - "src": "409:19:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "contract Migrations", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 159, - "type": "type(contract Migrations)", - "value": "Migrations" - }, - "id": 147, - "name": "Identifier", - "src": "431:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 140, - "type": "address", - "value": "new_address" - }, - "id": 148, - "name": "Identifier", - "src": "442:11:1" - } - ], - "id": 149, - "name": "FunctionCall", - "src": "431:23:1" - } - ], - "id": 150, - "name": "VariableDeclarationStatement", - "src": "409:45:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "setCompleted", - "referencedDeclaration": 138, - "type": "function (uint256) external" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 146, - "type": "contract Migrations", - "value": "upgraded" - }, - "id": 151, - "name": "Identifier", - "src": "460:8:1" - } - ], - "id": 153, - "name": "MemberAccess", - "src": "460:21:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 108, - "type": "uint256", - "value": "last_completed_migration" - }, - "id": 154, - "name": "Identifier", - "src": "482:24:1" - } - ], - "id": 155, - "name": "FunctionCall", - "src": "460:47:1" - } - ], - "id": 156, - "name": "ExpressionStatement", - "src": "460:47:1" - } - ], - "id": 157, - "name": "Block", - "src": "403:109:1" - } - ], - "id": 158, - "name": "FunctionDefinition", - "src": "347:165:1" - } - ], - "id": 159, - "name": "ContractDefinition", - "src": "26:488:1" - } - ], - "id": 160, - "name": "SourceUnit", - "src": "0:515:1" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "5777": { - "events": {}, - "links": {}, - "address": "0x855d1c79ad3fb086d516554dc7187e3fdfc1c79a" - } - }, - "schemaVersion": "1.0.1", - "updatedAt": "2018-03-31T20:45:29.806Z" -} \ No newline at end of file diff --git a/contracts/EthereumDIDRegistry.sol b/contracts/EthereumDIDRegistry.sol index 3bd2b13..4921506 100644 --- a/contracts/EthereumDIDRegistry.sol +++ b/contracts/EthereumDIDRegistry.sol @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: MIT */ + pragma solidity ^0.8.6; contract EthereumDIDRegistry { @@ -8,7 +10,7 @@ contract EthereumDIDRegistry { mapping(address => uint) public nonce; modifier onlyOwner(address identity, address actor) { - require (actor == identityOwner(identity)); + require (actor == identityOwner(identity), "bad_actor"); _; } @@ -36,7 +38,7 @@ contract EthereumDIDRegistry { function identityOwner(address identity) public view returns(address) { address owner = owners[identity]; - if (owner != 0x0000000000000000000000000000000000000000) { + if (owner != address(0x00)) { return owner; } return identity; @@ -44,7 +46,7 @@ contract EthereumDIDRegistry { function checkSignature(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 hash) internal returns(address) { address signer = ecrecover(hash, sigV, sigR, sigS); - require(signer == identityOwner(identity)); + require(signer == identityOwner(identity), "bad_signature"); nonce[signer]++; return signer; } @@ -122,9 +124,9 @@ contract EthereumDIDRegistry { revokeAttribute(identity, msg.sender, name, value); } - function revokeAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes memory value) public { - bytes32 hash = keccak256(abi.encodePacked(bytes1(0x19), bytes1(0), this, nonce[identityOwner(identity)], identity, "revokeAttribute", name, value)); + function revokeAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes memory value) public { + bytes32 hash = keccak256(abi.encodePacked(bytes1(0x19), bytes1(0), this, nonce[identityOwner(identity)], identity, "revokeAttribute", name, value)); revokeAttribute(identity, checkSignature(identity, sigV, sigR, sigS, hash), name, value); } -} \ No newline at end of file +} diff --git a/contracts/Migrations.sol b/contracts/Migrations.sol deleted file mode 100644 index f170cb4..0000000 --- a/contracts/Migrations.sol +++ /dev/null @@ -1,23 +0,0 @@ -pragma solidity ^0.4.17; - -contract Migrations { - address public owner; - uint public last_completed_migration; - - modifier restricted() { - if (msg.sender == owner) _; - } - - function Migrations() public { - owner = msg.sender; - } - - function setCompleted(uint completed) public restricted { - last_completed_migration = completed; - } - - function upgrade(address new_address) public restricted { - Migrations upgraded = Migrations(new_address); - upgraded.setCompleted(last_completed_migration); - } -} diff --git a/hardhat.config.ts b/hardhat.config.ts new file mode 100644 index 0000000..8b5723d --- /dev/null +++ b/hardhat.config.ts @@ -0,0 +1,60 @@ +import * as dotenv from 'dotenv' + +import { HardhatUserConfig, task } from 'hardhat/config' +import '@nomiclabs/hardhat-etherscan' +import '@nomiclabs/hardhat-waffle' +import '@typechain/hardhat' +import 'hardhat-gas-reporter' +import 'solidity-coverage' + +dotenv.config() + +// This is a sample Hardhat task. To learn how to create your own go to +// https://hardhat.org/guides/create-task.html +task('accounts', 'Prints the list of accounts', async (taskArgs, hre) => { + const accounts = await hre.ethers.getSigners() + + for (const account of accounts) { + console.log(account.address) + } +}) + +// You need to export an object to set up your config +// Go to https://hardhat.org/config/ to learn more + +const config: HardhatUserConfig = { + solidity: { + compilers: [ + { + version: '0.8.6', + settings: { + optimizer: { + enabled: true, + runs: 1000, + }, + }, + }, + ], + }, + paths: { + sources: './contracts', + tests: './test', + cache: './cache', + artifacts: './artifacts', + }, + networks: { + ropsten: { + url: process.env.ROPSTEN_URL || '', + accounts: process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [], + }, + }, + gasReporter: { + enabled: process.env.REPORT_GAS !== undefined, + currency: 'USD', + }, + etherscan: { + apiKey: process.env.ETHERSCAN_API_KEY, + }, +} + +export default config diff --git a/migrations/1519574947_ethereum_did_registry.js b/migrations/1519574947_ethereum_did_registry.js deleted file mode 100644 index bdb0e97..0000000 --- a/migrations/1519574947_ethereum_did_registry.js +++ /dev/null @@ -1,6 +0,0 @@ -var EthereumDIDRegistry = artifacts.require("EthereumDIDRegistry"); - -module.exports = function(deployer) { - // deployment steps - deployer.deploy(EthereumDIDRegistry); -}; \ No newline at end of file diff --git a/migrations/1_initial_migration.js b/migrations/1_initial_migration.js deleted file mode 100644 index 4d5f3f9..0000000 --- a/migrations/1_initial_migration.js +++ /dev/null @@ -1,5 +0,0 @@ -var Migrations = artifacts.require("./Migrations.sol"); - -module.exports = function(deployer) { - deployer.deploy(Migrations); -}; diff --git a/package.json b/package.json index 050c07a..82ec3ba 100644 --- a/package.json +++ b/package.json @@ -1,38 +1,74 @@ { "name": "ethr-did-registry", - "version": "0.0.3", + "version": "0.0.4", "description": "A repository storing keys and other data about Ethereum Decentralized Identifiers (DIDs)", - "main": "build/contracts/EthereumDIDRegistry.json", - "directories": { - "test": "test" - }, + "main": "artifacts/contracts/EthereumDIDRegistry.sol/EthereumDIDRegistry.json", "dependencies": {}, "devDependencies": { - "ethereumjs-tx": "^1.3.4", - "ethereumjs-util": "^5.1.5", - "ganache-cli": "^6.0.3", - "js-sha3": "^0.7.0", + "@babel/core": "7.16.0", + "@babel/preset-env": "7.16.4", + "@babel/preset-typescript": "7.16.0", + "@nomiclabs/hardhat-ethers": "^2.0.0", + "@nomiclabs/hardhat-etherscan": "^2.1.3", + "@nomiclabs/hardhat-waffle": "^2.0.0", + "@typechain/ethers-v5": "^7.0.1", + "@typechain/hardhat": "^2.3.0", + "@types/chai": "^4.2.21", + "@types/chai-as-promised": "^7.1.4", + "@types/mocha": "^9.0.0", + "@types/node": "^16.4.13", + "@typescript-eslint/eslint-plugin": "^4.29.1", + "@typescript-eslint/parser": "^4.29.1", + "babel-jest": "27.3.1", + "chai": "^4.2.0", + "chai-as-promised": "^7.1.1", + "dotenv": "^10.0.0", + "eslint": "^7.29.0", + "eslint-config-prettier": "^8.3.0", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^3.4.0", + "eslint-plugin-promise": "^5.1.0", + "ethereum-waffle": "^3.0.0", + "ethereumjs-tx": "^2.1.2", + "ethereumjs-util": "^7.1.3", + "ethers": "^5.0.0", + "hardhat": "^2.7.0", + "hardhat-gas-reporter": "^1.0.4", "ls": "^0.2.1", - "solhint": "^1.1.10", - "truffle": "^4.1.6", - "truffle-hdwallet-provider": "^1.0.6" + "prettier": "^2.3.2", + "prettier-plugin-solidity": "^1.0.0-beta.13", + "solhint": "^3.3.6", + "solidity-coverage": "^0.7.16", + "ts-node": "^10.1.0", + "typechain": "^5.1.2", + "typescript": "^4.3.5", + "uint8arrays": "^3.0.0" }, "scripts": { - "test": "./node_modules/.bin/truffle test", - "lint": "./node_modules/.bin/solhint contracts/EthereumDIDRegistry.sol", - "_deploy": "./node_modules/.bin/truffle migrate --network ", - "deploy-mainnet": "npm run _deploy mainnet", - "deploy-infuranet": "npm run _deploy infuranet", - "deploy-ropsten": "npm run _deploy ropsten", - "deploy-rinkeby": "npm run _deploy rinkeby", - "deploy-kovan": "npm run _deploy kovan", - "deploy-local": "npm run _deploy local", - "deploy-test": "npm run _deploy test" + "build:js": "tsc", + "build:sol": "hardhat compile", + "build": "yarn build:sol && yarn build:js", + "test": "hardhat test", + "lint:js": "npx eslint '**/*.{js,ts}' --fix", + "lint:sol": "npx solhint 'contracts/**/*.sol' --fix", + "lint": "yarn lint:sol && yarn lint:js", + "prettier": "prettier -w '**/*.{ts,js,json,md}'" }, + "author": "Pelle Braendgaard ", + "contributors": [ + "Mircea Nistor " + ], + "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/uport-project/ethr-did-registry" + "url": "git@github.com:uport-project/ethr-did-registry.git" }, - "author": "Pelle Braendgaard ", - "license": "Apache-2.0" + "files": [ + "artifacts", + "contracts", + "dist", + "typechain" + ] } diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..7a8691b --- /dev/null +++ b/renovate.json @@ -0,0 +1,13 @@ +{ + "extends": ["config:base", "group:allNonMajor"], + "labels": ["maintenance"], + "automergeType": "branch", + "automerge": true, + "packageRules": [ + { + "matchDepTypes": ["devDependencies"], + "groupName": "devDeps", + "schedule": ["before 5am on Monday"] + } + ] +} diff --git a/scripts/deploy.ts b/scripts/deploy.ts new file mode 100644 index 0000000..8aead74 --- /dev/null +++ b/scripts/deploy.ts @@ -0,0 +1,30 @@ +// We require the Hardhat Runtime Environment explicitly here. This is optional +// but useful for running the script in a standalone fashion through `node