diff --git a/contracts/AddressSet/AddressSet.sol b/contracts/AddressSet/AddressSet.sol index e4239f9..8dfb5c6 100644 --- a/contracts/AddressSet/AddressSet.sol +++ b/contracts/AddressSet/AddressSet.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; /// @title An implementation of the set data structure for addresses. /// @author Noah Zinsmeister @@ -29,7 +29,7 @@ library AddressSet { self.memberIndices[self.members[self.memberIndices[other] - 1]] = self.memberIndices[other]; delete self.memberIndices[other]; // remove the last element - self.members.length--; + self.members.pop(); } } diff --git a/contracts/AddressSet/AddressSetTest.sol b/contracts/AddressSet/AddressSetTest.sol index 4cf162b..45afab9 100644 --- a/contracts/AddressSet/AddressSetTest.sol +++ b/contracts/AddressSet/AddressSetTest.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; import "./AddressSet.sol"; @@ -23,7 +23,7 @@ contract AddressSetTest { return mySet.length(); } - function members() public view returns (address[]) { + function members() public view returns (address[] memory) { return mySet.members; } diff --git a/contracts/IdentityRegistry.sol b/contracts/IdentityRegistry.sol index 58c7764..df24414 100644 --- a/contracts/IdentityRegistry.sol +++ b/contracts/IdentityRegistry.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; import "./SignatureVerifier.sol"; import "./AddressSet/AddressSet.sol"; @@ -164,7 +164,10 @@ contract IdentityRegistry is SignatureVerifier { /// @param ein The EIN to get information for. /// @return All the information for the Identity denominated by the passed EIN. function getIdentity(uint ein) public view _identityExists(ein) - returns (address recoveryAddress, address[] associatedAddresses, address[] providers, address[] resolvers) + returns ( + address recoveryAddress, + address[] memory associatedAddresses, address[] memory providers, address[] memory resolvers + ) { Identity storage _identity = identityDirectory[ein]; @@ -182,18 +185,20 @@ contract IdentityRegistry is SignatureVerifier { /// @notice Create an new Identity for the transaction sender. /// @dev Sets the msg.sender as the only Associated Address. /// @param recoveryAddress A recovery address to set for the new Identity. - /// @param provider A provider to set for the new Identity. + /// @param providers A list of providers to set for the new Identity. /// @param resolvers A list of resolvers to set for the new Identity. /// @return The EIN of the new Identity. - function createIdentity(address recoveryAddress, address provider, address[] resolvers) public returns (uint ein) + function createIdentity(address recoveryAddress, address[] memory providers, address[] memory resolvers) + public returns (uint ein) { - return createIdentity(recoveryAddress, msg.sender, provider, resolvers, false); + return createIdentity(recoveryAddress, msg.sender, providers, resolvers, false); } /// @notice Allows a Provider to create an new Identity for the passed associatedAddress. /// @dev Sets the msg.sender as the only provider. /// @param recoveryAddress A recovery address to set for the new Identity. /// @param associatedAddress An associated address to set for the new Identity (must have produced the signature). + /// @param providers A list of providers to set for the new Identity. /// @param resolvers A list of resolvers to set for the new Identity. /// @param v The v component of the signature. /// @param r The r component of the signature. @@ -201,7 +206,7 @@ contract IdentityRegistry is SignatureVerifier { /// @param timestamp The timestamp of the signature. /// @return The EIN of the new Identity. function createIdentityDelegated( - address recoveryAddress, address associatedAddress, address[] resolvers, + address recoveryAddress, address associatedAddress, address[] memory providers, address[] memory resolvers, uint8 v, bytes32 r, bytes32 s, uint timestamp ) public ensureSignatureTimeValid(timestamp) returns (uint ein) @@ -221,12 +226,13 @@ contract IdentityRegistry is SignatureVerifier { "Permission denied." ); - return createIdentity(recoveryAddress, associatedAddress, msg.sender, resolvers, true); + return createIdentity(recoveryAddress, associatedAddress, providers, resolvers, true); } /// @dev Common logic for all identity creation. function createIdentity( - address recoveryAddress, address associatedAddress, address provider, address[] resolvers, bool delegated + address recoveryAddress, + address associatedAddress, address[] memory providers, address[] memory resolvers, bool delegated ) private _hasIdentity(associatedAddress, false) returns (uint) { @@ -236,12 +242,14 @@ contract IdentityRegistry is SignatureVerifier { _identity.recoveryAddress = recoveryAddress; _identity.associatedAddresses.insert(associatedAddress); associatedAddressDirectory[associatedAddress] = ein; - _identity.providers.insert(provider); - for (uint i; i < resolvers.length; i++) { - _identity.resolvers.insert(resolvers[i]); + for (uint i; i < providers.length; i++) { + _identity.providers.insert(providers[i]); + } + for (uint j; j < resolvers.length; j++) { + _identity.resolvers.insert(resolvers[j]); } - emit IdentityCreated(msg.sender, ein, recoveryAddress, associatedAddress, provider, resolvers, delegated); + emit IdentityCreated(msg.sender, ein, recoveryAddress, associatedAddress, providers, resolvers, delegated); return ein; } @@ -255,7 +263,8 @@ contract IdentityRegistry is SignatureVerifier { /// @param s The s component of the signatures. /// @param timestamp The timestamp of the signatures. function addAssociatedAddressDelegated( - address approvingAddress, address addressToAdd, uint8[2] v, bytes32[2] r, bytes32[2] s, uint[2] timestamp + address approvingAddress, address addressToAdd, + uint8[2] memory v, bytes32[2] memory r, bytes32[2] memory s, uint[2] memory timestamp ) public _hasIdentity(addressToAdd, false) ensureSignatureTimeValid(timestamp[0]) ensureSignatureTimeValid(timestamp[1]) @@ -338,19 +347,19 @@ contract IdentityRegistry is SignatureVerifier { /// @notice Allows an associated address to add providers to its Identity. /// @param providers A list of providers. - function addProviders(address[] providers) public { + function addProviders(address[] memory providers) public { addProviders(getEIN(msg.sender), providers, false); } /// @notice Allows providers to add providers to an Identity. /// @param ein The EIN to add providers to. /// @param providers A list of providers. - function addProvidersFor(uint ein, address[] providers) public _isProviderFor(ein) { + function addProvidersFor(uint ein, address[] memory providers) public _isProviderFor(ein) { addProviders(ein, providers, true); } /// @dev Common logic for all provider adding. - function addProviders(uint ein, address[] providers, bool delegated) private { + function addProviders(uint ein, address[] memory providers, bool delegated) private { Identity storage _identity = identityDirectory[ein]; for (uint i; i < providers.length; i++) { _identity.providers.insert(providers[i]); @@ -360,19 +369,19 @@ contract IdentityRegistry is SignatureVerifier { /// @notice Allows an associated address to remove providers from its Identity. /// @param providers A list of providers. - function removeProviders(address[] providers) public { + function removeProviders(address[] memory providers) public { removeProviders(getEIN(msg.sender), providers, false); } /// @notice Allows providers to remove providers to an Identity. /// @param ein The EIN to remove providers from. /// @param providers A list of providers. - function removeProvidersFor(uint ein, address[] providers) public _isProviderFor(ein) { + function removeProvidersFor(uint ein, address[] memory providers) public _isProviderFor(ein) { removeProviders(ein, providers, true); } /// @dev Common logic for all provider removal. - function removeProviders(uint ein, address[] providers, bool delegated) private { + function removeProviders(uint ein, address[] memory providers, bool delegated) private { Identity storage _identity = identityDirectory[ein]; for (uint i; i < providers.length; i++) { _identity.providers.remove(providers[i]); @@ -383,7 +392,7 @@ contract IdentityRegistry is SignatureVerifier { /// @notice Allows providers to add resolvers to an Identity. /// @param ein The EIN to add resolvers to. /// @param resolvers A list of providers. - function addResolversFor(uint ein, address[] resolvers) public _isProviderFor(ein) { + function addResolversFor(uint ein, address[] memory resolvers) public _isProviderFor(ein) { Identity storage _identity = identityDirectory[ein]; for (uint i; i < resolvers.length; i++) { _identity.resolvers.insert(resolvers[i]); @@ -394,7 +403,7 @@ contract IdentityRegistry is SignatureVerifier { /// @notice Allows providers to remove resolvers from an Identity. /// @param ein The EIN to remove resolvers from. /// @param resolvers A list of providers. - function removeResolversFor(uint ein, address[] resolvers) public _isProviderFor(ein) { + function removeResolversFor(uint ein, address[] memory resolvers) public _isProviderFor(ein) { Identity storage _identity = identityDirectory[ein]; for (uint i; i < resolvers.length; i++) { _identity.resolvers.remove(resolvers[i]); @@ -483,17 +492,18 @@ contract IdentityRegistry is SignatureVerifier { /// @param firstChunk The array of addresses before the msg.sender in the pre-recovery associated addresses array. /// @param lastChunk The array of addresses after the msg.sender in the pre-recovery associated addresses array. /// @param resetResolvers true if the poisonser wants resolvers to be removed, false otherwise. - function triggerPoisonPill(uint ein, address[] firstChunk, address[] lastChunk, bool resetResolvers) + function triggerPoisonPill(uint ein, address[] memory firstChunk, address[] memory lastChunk, bool resetResolvers) public _identityExists(ein) { require(!canRecover(ein), "Recovery has not recently been triggered."); Identity storage _identity = identityDirectory[ein]; // ensure that the msg.sender was an old associated address for the referenced identity - address[1] memory middleChunk = [msg.sender]; + address payable[1] memory middleChunk = [msg.sender]; require( - keccak256(abi.encodePacked(firstChunk, middleChunk, lastChunk)) == - recoveryLogs[ein].hashedOldAssociatedAddresses, + keccak256( + abi.encodePacked(firstChunk, middleChunk, lastChunk) + ) == recoveryLogs[ein].hashedOldAssociatedAddresses, "Cannot activate the poison pill from an address that was not recently removed via recovery." ); @@ -518,7 +528,7 @@ contract IdentityRegistry is SignatureVerifier { event IdentityCreated( address indexed initiator, uint indexed ein, - address recoveryAddress, address associatedAddress, address provider, address[] resolvers, bool delegated + address recoveryAddress, address associatedAddress, address[] providers, address[] resolvers, bool delegated ); event AssociatedAddressAdded( address indexed initiator, uint indexed ein, address approvingAddress, address addedAddress diff --git a/contracts/Migrations.sol b/contracts/Migrations.sol index da4859c..d5114c1 100644 --- a/contracts/Migrations.sol +++ b/contracts/Migrations.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; contract Migrations { address public owner; diff --git a/contracts/SignatureVerifier.sol b/contracts/SignatureVerifier.sol index d038437..986de1e 100644 --- a/contracts/SignatureVerifier.sol +++ b/contracts/SignatureVerifier.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; /// @title Provides helper functions to determine the validity of passed signatures. /// @author Noah Zinsmeister diff --git a/contracts/_testing/examples/Resolvers/ERC1056/EthereumDIDRegistry.sol b/contracts/_testing/examples/Resolvers/ERC1056/EthereumDIDRegistry.sol index ed82afb..ccb7196 100644 --- a/contracts/_testing/examples/Resolvers/ERC1056/EthereumDIDRegistry.sol +++ b/contracts/_testing/examples/Resolvers/ERC1056/EthereumDIDRegistry.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.4; +pragma solidity ^0.5.0; contract EthereumDIDRegistry { @@ -36,7 +36,7 @@ contract EthereumDIDRegistry { function identityOwner(address identity) public view returns(address) { address owner = owners[identity]; - if (owner != 0x0) { + if (owner != address(0)) { return owner; } return identity; @@ -99,30 +99,30 @@ contract EthereumDIDRegistry { revokeDelegate(identity, checkSignature(identity, sigV, sigR, sigS, hash), delegateType, delegate); } - function setAttribute(address identity, address actor, bytes32 name, bytes value, uint validity ) internal onlyOwner(identity, actor) { + function setAttribute(address identity, address actor, bytes32 name, bytes memory value, uint validity ) internal onlyOwner(identity, actor) { emit DIDAttributeChanged(identity, name, value, now + validity, changed[identity]); changed[identity] = block.number; } - function setAttribute(address identity, bytes32 name, bytes value, uint validity) public { + function setAttribute(address identity, bytes32 name, bytes memory value, uint validity) public { setAttribute(identity, msg.sender, name, value, validity); } - function setAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes value, uint validity) public { + function setAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes memory value, uint validity) public { bytes32 hash = keccak256(abi.encodePacked(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, "setAttribute", name, value, validity)); setAttribute(identity, checkSignature(identity, sigV, sigR, sigS, hash), name, value, validity); } - function revokeAttribute(address identity, address actor, bytes32 name, bytes value ) internal onlyOwner(identity, actor) { + function revokeAttribute(address identity, address actor, bytes32 name, bytes memory value ) internal onlyOwner(identity, actor) { emit DIDAttributeChanged(identity, name, value, 0, changed[identity]); changed[identity] = block.number; } - function revokeAttribute(address identity, bytes32 name, bytes value) public { + function revokeAttribute(address identity, bytes32 name, bytes memory value) public { revokeAttribute(identity, msg.sender, name, value); } - function revokeAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes value) public { + function revokeAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes memory value) public { bytes32 hash = keccak256(abi.encodePacked(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, "revokeAttribute", name, value)); revokeAttribute(identity, checkSignature(identity, sigV, sigR, sigS, hash), name, value); } diff --git a/contracts/examples/Providers/MetaTransactions/ExternalProxy.sol b/contracts/examples/Providers/MetaTransactions/ExternalProxy.sol index 2f0a894..ddf7ec5 100644 --- a/contracts/examples/Providers/MetaTransactions/ExternalProxy.sol +++ b/contracts/examples/Providers/MetaTransactions/ExternalProxy.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; import "./Forwarder.sol"; @@ -17,7 +17,9 @@ contract ExternalProxy is Forwarder { _; } - function forwardCall(address destination, bytes memory data) public onlyAllowedCaller() { - super.forwardCall(destination, data); + function forwardCall(address destination, bytes memory data) + public onlyAllowedCaller() returns (bytes memory returnData) + { + return super.forwardCall(destination, data); } } diff --git a/contracts/examples/Providers/MetaTransactions/Forwarder.sol b/contracts/examples/Providers/MetaTransactions/Forwarder.sol index c7a9840..27e6de2 100644 --- a/contracts/examples/Providers/MetaTransactions/Forwarder.sol +++ b/contracts/examples/Providers/MetaTransactions/Forwarder.sol @@ -1,11 +1,14 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; contract ForwarderInterface { - function forwardCall(address destination, bytes memory data) public; + function forwardCall(address destination, bytes memory data) public returns (bytes memory returnData); } contract Forwarder is ForwarderInterface { - function forwardCall(address destination, bytes memory data) public { - require(destination.call(data), "Call was not successful."); // solium-disable-line security/no-low-level-calls + function forwardCall(address destination, bytes memory data) public returns (bytes memory returnData) { + // solium-disable-next-line security/no-low-level-calls + (bool success, bytes memory _returnData) = destination.call(data); + require(success, "Call was not successful."); + return _returnData; } } diff --git a/contracts/examples/Providers/MetaTransactions/MetaTransactionsProvider.sol b/contracts/examples/Providers/MetaTransactions/MetaTransactionsProvider.sol index a045fd4..3037ae7 100644 --- a/contracts/examples/Providers/MetaTransactions/MetaTransactionsProvider.sol +++ b/contracts/examples/Providers/MetaTransactions/MetaTransactionsProvider.sol @@ -1,13 +1,12 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; import "./ExternalProxy.sol"; interface IdentityRegistryInterface { - function isSigned( - address _address, bytes32 messageHash, uint8 v, bytes32 r, bytes32 s - ) external view returns (bool); + function isSigned(address _address, bytes32 messageHash, uint8 v, bytes32 r, bytes32 s) + external view returns (bool); function createIdentityDelegated( - address recoveryAddress, address associatedAddress, address[] resolvers, + address recoveryAddress, address associatedAddress, address[] calldata providers, address[] calldata resolvers, uint8 v, bytes32 r, bytes32 s, uint timestamp ) external returns (uint ein); function getEIN(address _address) external view returns (uint ein); @@ -38,32 +37,35 @@ contract MetaTransactionsProvider is Forwarder { // create identity with meta-transaction function createIdentityDelegated( - address recoveryAddress, address associatedAddress, address[] resolvers, + address recoveryAddress, address associatedAddress, address[] memory resolvers, uint8 v, bytes32 r, bytes32 s, uint timestamp ) public returns (uint ein) { + address[] memory providers = new address[](1); + providers[0] = address(this); return identityRegistry.createIdentityDelegated( - recoveryAddress, associatedAddress, resolvers, v, r, s, timestamp + recoveryAddress, associatedAddress, providers, resolvers, v, r, s, timestamp ); } // internal logic for claiming an external proxy function claimProxy(uint ein) private { - address externalProxy = new ExternalProxy(ein, address(this)); + ExternalProxy externalProxy = new ExternalProxy(ein, address(this)); // register proxy in the directoy - externalProxyDirectory[ein] = externalProxy; + externalProxyDirectory[ein] = address(externalProxy); } // call via proxy from msg.sender - function callViaProxy(address destination, bytes data, bool viaExternal) public { + function callViaProxy(address destination, bytes memory data, bool viaExternal) public { callViaProxy(identityRegistry.getEIN(msg.sender), destination, data, viaExternal); } // call via proxy from approvingAddress with meta-transaction function callViaProxyDelegated( - address approvingAddress, address destination, bytes data, bool viaExternal, uint8 v, bytes32 r, bytes32 s + address approvingAddress, address destination, bytes memory data, bool viaExternal, + uint8 v, bytes32 r, bytes32 s ) public { @@ -87,14 +89,16 @@ contract MetaTransactionsProvider is Forwarder { } // internal logic for calling proxy - function callViaProxy(uint ein, address destination, bytes data, bool viaExternal) private isProviderFor(ein) { + function callViaProxy(uint ein, address destination, bytes memory data, bool viaExternal) + private isProviderFor(ein) returns (bytes memory returnData) + { if (viaExternal) { if (!hasExternalProxy(ein)) { claimProxy(ein); } - ForwarderInterface(externalProxyDirectory[ein]).forwardCall(destination, data); + return ForwarderInterface(externalProxyDirectory[ein]).forwardCall(destination, data); } else { - forwardCall(destination, data); + return forwardCall(destination, data); } } } diff --git a/contracts/examples/Resolvers/ERC1056/ERC1056.sol b/contracts/examples/Resolvers/ERC1056/ERC1056.sol index 6e6c0a2..69d8f7a 100644 --- a/contracts/examples/Resolvers/ERC1056/ERC1056.sol +++ b/contracts/examples/Resolvers/ERC1056/ERC1056.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; interface IdentityRegistryInterface { function isSigned( @@ -14,8 +14,8 @@ interface EthereumDIDRegistryInterface { function changeOwnerSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, address newOwner) external; function addDelegate (address identity, bytes32 delegateType, address delegate, uint validity) external; function revokeDelegate (address identity, bytes32 delegateType, address delegate) external; - function setAttribute (address identity, bytes32 name, bytes value, uint validity) external; - function revokeAttribute (address identity, bytes32 name, bytes value) external; + function setAttribute (address identity, bytes32 name, bytes calldata value, uint validity) external; + function revokeAttribute (address identity, bytes32 name, bytes calldata value) external; } contract ERC1056 { @@ -131,13 +131,13 @@ contract ERC1056 { ethereumDIDRegistry.revokeDelegate(_did, _delegateType, _delegate); } - function setAttribute(bytes32 name, bytes value, uint validity) public { + function setAttribute(bytes32 name, bytes memory value, uint validity) public { uint ein = identityRegistry.getEIN(msg.sender); _setAttribute(einToDID[ein], name, value, validity); } function setAttributeDelegated( - address approvingAddress, bytes32 name, bytes value, uint validity, uint8 v, bytes32 r, bytes32 s + address approvingAddress, bytes32 name, bytes memory value, uint validity, uint8 v, bytes32 r, bytes32 s ) public { @@ -159,18 +159,18 @@ contract ERC1056 { _setAttribute(einToDID[ein], name, value, validity); } - function _setAttribute(address _did, bytes32 _name, bytes _value, uint _validity) internal { + function _setAttribute(address _did, bytes32 _name, bytes memory _value, uint _validity) internal { require(_did != address(0), "This EIN has not been initialized"); ethereumDIDRegistry.setAttribute(_did, _name, _value, _validity); } - function revokeAttribute(bytes32 name, bytes value) public { + function revokeAttribute(bytes32 name, bytes memory value) public { uint ein = identityRegistry.getEIN(msg.sender); _revokeAttribute(einToDID[ein], name, value); } function revokeAttributeDelegated( - address approvingAddress, bytes32 name, bytes value, uint8 v, bytes32 r, bytes32 s + address approvingAddress, bytes32 name, bytes memory value, uint8 v, bytes32 r, bytes32 s ) public { @@ -192,7 +192,7 @@ contract ERC1056 { _revokeAttribute(einToDID[ein], name, value); } - function _revokeAttribute(address _did, bytes32 _name, bytes _value) internal { + function _revokeAttribute(address _did, bytes32 _name, bytes memory _value) internal { require(_did != address(0), "This EIN has not been initialized"); ethereumDIDRegistry.revokeAttribute(_did, _name, _value); } diff --git a/contracts/examples/Resolvers/ERC725/ClaimHolder.sol b/contracts/examples/Resolvers/ERC725/ClaimHolder.sol index 40551a0..927db4c 100644 --- a/contracts/examples/Resolvers/ERC725/ClaimHolder.sol +++ b/contracts/examples/Resolvers/ERC725/ClaimHolder.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; import "./ERC735.sol"; import "./KeyHolder.sol"; @@ -25,9 +25,9 @@ contract ClaimHolder is KeyHolder, ERC735 { uint256 _topic, uint256 _scheme, address _issuer, - bytes _signature, - bytes _data, - string _uri + bytes memory _signature, + bytes memory _data, + string memory _uri ) public returns (bytes32 claimRequestId) @@ -88,9 +88,9 @@ contract ClaimHolder is KeyHolder, ERC735 { uint256 claimType, uint256 scheme, address issuer, - bytes signature, - bytes data, - string uri + bytes memory signature, + bytes memory data, + string memory uri ) { return ( @@ -106,7 +106,7 @@ contract ClaimHolder is KeyHolder, ERC735 { function getClaimIdsByTopic(uint256 _topic) public view - returns(bytes32[] claimIds) + returns(bytes32[] memory claimIds) { return claims.byTopic[_topic]; } diff --git a/contracts/examples/Resolvers/ERC725/ERC725.sol b/contracts/examples/Resolvers/ERC725/ERC725.sol index 45fa9eb..3bd7496 100644 --- a/contracts/examples/Resolvers/ERC725/ERC725.sol +++ b/contracts/examples/Resolvers/ERC725/ERC725.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; contract ERC725 { @@ -13,11 +13,11 @@ contract ERC725 { event Executed(uint256 indexed executionId, address indexed to, uint256 indexed value, bytes data); event Approved(uint256 indexed executionId, bool approved); - function getKey(bytes32 _key) public view returns(uint256[] purposes, uint256 keyType, bytes32 key); + function getKey(bytes32 _key) public view returns(uint256[] memory purposes, uint256 keyType, bytes32 key); function keyHasPurpose(bytes32 _key, uint256 _purpose) public view returns (bool exists); - function getKeysByPurpose(uint256 _purpose) public view returns(bytes32[] keys); + function getKeysByPurpose(uint256 _purpose) public view returns(bytes32[] memory keys); function addKey(bytes32 _key, uint256 _purpose, uint256 _keyType) public returns (bool success); function removeKey(bytes32 _key, uint256 _purpose) public returns (bool success); - function execute(address _to, uint256 _value, bytes _data) public returns (uint256 executionId); + function execute(address _to, uint256 _value, bytes memory _data) public returns (uint256 executionId); function approve(uint256 _id, bool _approve) public returns (bool success); } diff --git a/contracts/examples/Resolvers/ERC725/ERC725RegistryResolver.sol b/contracts/examples/Resolvers/ERC725/ERC725RegistryResolver.sol index dab5c3d..6196928 100644 --- a/contracts/examples/Resolvers/ERC725/ERC725RegistryResolver.sol +++ b/contracts/examples/Resolvers/ERC725/ERC725RegistryResolver.sol @@ -1,11 +1,14 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; import "./ClaimHolder.sol"; contract IdentityRegistryInterface { function getEIN(address _address) public view returns (uint ein); function getIdentity(uint ein) public view - returns (address recoveryAddress, address[] associatedAddresses, address[] providers, address[] resolvers); + returns ( + address recoveryAddress, + address[] memory associatedAddresses, address[] memory providers, address[] memory resolvers + ); } contract ERC725RegistryResolver { @@ -27,8 +30,9 @@ contract ERC725RegistryResolver { // TODO: change this if addKey implementation changes s.t. it can return false claim.addKey(keccak256(abi.encodePacked(msg.sender)), 1, 1); - einTo725[ein] = claim; - return(claim); + einTo725[ein] = address(claim); + + return(address(claim)); } function claim725(address _contract) public returns(bool) { diff --git a/contracts/examples/Resolvers/ERC725/ERC735.sol b/contracts/examples/Resolvers/ERC725/ERC735.sol index d5b09ea..6672405 100644 --- a/contracts/examples/Resolvers/ERC725/ERC735.sol +++ b/contracts/examples/Resolvers/ERC725/ERC735.sol @@ -1,15 +1,14 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; contract ERC735 { - // solium-disable max-len event ClaimRequested(uint256 indexed claimRequestId, uint256 indexed topic, uint256 scheme, address indexed issuer, bytes signature, bytes data, string uri); event ClaimAdded(bytes32 indexed claimId, uint256 indexed topic, uint256 scheme, address indexed issuer, bytes signature, bytes data, string uri); event ClaimRemoved(bytes32 indexed claimId, uint256 indexed topic, uint256 scheme, address indexed issuer, bytes signature, bytes data, string uri); event ClaimChanged(bytes32 indexed claimId, uint256 indexed topic, uint256 scheme, address indexed issuer, bytes signature, bytes data, string uri); - function getClaim(bytes32 _claimId) public view returns(uint256 topic, uint256 scheme, address issuer, bytes signature, bytes data, string uri); - function getClaimIdsByTopic(uint256 _topic) public view returns(bytes32[] claimIds); - function addClaim(uint256 _topic, uint256 _scheme, address issuer, bytes _signature, bytes _data, string _uri) public returns (bytes32 claimRequestId); + function getClaim(bytes32 _claimId) public view returns(uint256 topic, uint256 scheme, address issuer, bytes memory signature, bytes memory data, string memory uri); + function getClaimIdsByTopic(uint256 _topic) public view returns(bytes32[] memory claimIds); + function addClaim(uint256 _topic, uint256 _scheme, address issuer, bytes memory _signature, bytes memory _data, string memory _uri) public returns (bytes32 claimRequestId); function removeClaim(bytes32 _claimId) public returns (bool success); } diff --git a/contracts/examples/Resolvers/ERC725/KeyHolder.sol b/contracts/examples/Resolvers/ERC725/KeyHolder.sol index 777dc7c..64f3998 100644 --- a/contracts/examples/Resolvers/ERC725/KeyHolder.sol +++ b/contracts/examples/Resolvers/ERC725/KeyHolder.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; import "./ERC725.sol"; @@ -41,7 +41,7 @@ contract KeyHolder is ERC725 { function getKey(bytes32 _key) public view - returns(uint256[] purposes, uint256 keyType, bytes32 key) + returns(uint256[] memory purposes, uint256 keyType, bytes32 key) { return (keyHolderData.keys[_key].purposes, keyHolderData.keys[_key].keyType, keyHolderData.keys[_key].key); } @@ -49,7 +49,7 @@ contract KeyHolder is ERC725 { function getKeyPurpose(bytes32 _key) public view - returns(uint256[] purposes) + returns(uint256[] memory purposes) { return (keyHolderData.keys[_key].purposes); } @@ -57,7 +57,7 @@ contract KeyHolder is ERC725 { function getKeysByPurpose(uint256 _purpose) public view - returns(bytes32[] _keys) + returns(bytes32[] memory _keys) { return keyHolderData.keysByPurpose[_purpose]; } @@ -94,8 +94,8 @@ contract KeyHolder is ERC725 { if (_approve == true) { keyHolderData.executions[_id].approved = true; // solium-disable-next-line security/no-low-level-calls - success = keyHolderData.executions[_id].to.call(keyHolderData.executions[_id].data, 0); - if (success) { + (bool _success,) = keyHolderData.executions[_id].to.call(abi.encode(keyHolderData.executions[_id].data, 0)); + if (_success) { keyHolderData.executions[_id].executed = true; emit Executed( _id, @@ -103,7 +103,7 @@ contract KeyHolder is ERC725 { keyHolderData.executions[_id].value, keyHolderData.executions[_id].data ); - return; + return true; } else { emit ExecutionFailed( _id, @@ -111,7 +111,7 @@ contract KeyHolder is ERC725 { keyHolderData.executions[_id].value, keyHolderData.executions[_id].data ); - return; + return false; } } else { keyHolderData.executions[_id].approved = false; @@ -119,7 +119,7 @@ contract KeyHolder is ERC725 { return true; } - function execute(address _to, uint256 _value, bytes _data) + function execute(address _to, uint256 _value, bytes memory _data) public returns (uint256 executionId) { diff --git a/contracts/samples/Provider.sol b/contracts/samples/Provider.sol index 3e81014..d563311 100644 --- a/contracts/samples/Provider.sol +++ b/contracts/samples/Provider.sol @@ -1,19 +1,22 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; interface IdentityRegistryInterface { function getEIN(address _address) external view returns (uint ein); function createIdentityDelegated( - address recoveryAddress, address associatedAddress, address[] resolvers, + address recoveryAddress, address associatedAddress, address[] calldata providers, address[] calldata resolvers, uint8 v, bytes32 r, bytes32 s, uint timestamp ) external returns (uint ein); function addAssociatedAddressDelegated( - address approvingAddress, address addressToAdd, uint8[2] v, bytes32[2] r, bytes32[2] s, uint[2] timestamp + address approvingAddress, address addressToAdd, + uint8[2] calldata v, bytes32[2] calldata r, bytes32[2] calldata s, uint[2] calldata timestamp ) external; - function removeAssociatedAddressDelegated(address addressToRemove, uint8 v, bytes32 r, bytes32 s, uint timestamp) external; - function addProvidersFor (uint ein, address[] providers) external; - function removeProvidersFor(uint ein, address[] providers) external; - function addResolversFor (uint ein, address[] resolvers) external; - function removeResolversFor(uint ein, address[] resolvers) external; + function removeAssociatedAddressDelegated( + address addressToRemove, uint8 v, bytes32 r, bytes32 s, uint timestamp + ) external; + function addProvidersFor(uint ein, address[] calldata providers) external; + function removeProvidersFor(uint ein, address[] calldata providers) external; + function addResolversFor(uint ein, address[] calldata resolvers) external; + function removeResolversFor(uint ein, address[] calldata resolvers) external; function triggerRecoveryAddressChangeFor(uint ein, address newRecoveryAddress) external; } @@ -25,41 +28,46 @@ contract Provider { } function createIdentityDelegated( - address recoveryAddress, address associatedAddress, address[] resolvers, + address recoveryAddress, address associatedAddress, address[] memory resolvers, uint8 v, bytes32 r, bytes32 s, uint timestamp ) public returns (uint ein) { + address[] memory providers = new address[](1); + providers[0] = address(this); return identityRegistry.createIdentityDelegated( - recoveryAddress, associatedAddress, resolvers, v, r, s, timestamp + recoveryAddress, associatedAddress, providers, resolvers, v, r, s, timestamp ); } function addAssociatedAddressDelegated( - address approvingAddress, address addressToAdd, uint8[2] v, bytes32[2] r, bytes32[2] s, uint[2] timestamp + address approvingAddress, address addressToAdd, + uint8[2] memory v, bytes32[2] memory r, bytes32[2] memory s, uint[2] memory timestamp ) public { identityRegistry.addAssociatedAddressDelegated(approvingAddress, addressToAdd, v, r, s, timestamp); } - function removeAssociatedAddressDelegated(address addressToRemove, uint8 v, bytes32 r, bytes32 s, uint timestamp) public { + function removeAssociatedAddressDelegated(address addressToRemove, uint8 v, bytes32 r, bytes32 s, uint timestamp) + public + { identityRegistry.removeAssociatedAddressDelegated(addressToRemove, v, r, s, timestamp); } - function addProvidersFor(address[] providers) public { + function addProvidersFor(address[] memory providers) public { identityRegistry.addProvidersFor(identityRegistry.getEIN(msg.sender), providers); } - function removeProvidersFor(address[] providers) public { + function removeProvidersFor(address[] memory providers) public { identityRegistry.removeProvidersFor(identityRegistry.getEIN(msg.sender), providers); } - function addResolversFor(address[] resolvers) public { + function addResolversFor(address[] memory resolvers) public { identityRegistry.addResolversFor(identityRegistry.getEIN(msg.sender), resolvers); } - function removeResolversFor(address[] resolvers) public { + function removeResolversFor(address[] memory resolvers) public { identityRegistry.removeResolversFor(identityRegistry.getEIN(msg.sender), resolvers); } diff --git a/contracts/samples/Resolver.sol b/contracts/samples/Resolver.sol index 7bfd3e0..d4c6d5f 100644 --- a/contracts/samples/Resolver.sol +++ b/contracts/samples/Resolver.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.24; +pragma solidity ^0.5.0; interface IdentityRegistryInterface { function getEIN(address _address) external view returns (uint ein); @@ -15,7 +15,7 @@ contract Resolver { identityRegistry = IdentityRegistryInterface(identityRegistryAddress); } - function setEmailAddress(string email) public { + function setEmailAddress(string memory email) public { uint ein = identityRegistry.getEIN(msg.sender); require( identityRegistry.isResolverFor(ein, address(this)), "The calling identity does not have this resolver set." @@ -23,7 +23,7 @@ contract Resolver { emails[ein] = email; } - function getEmail(uint ein) public view returns(string) { + function getEmail(uint ein) public view returns(string memory) { require(identityRegistry.identityExists(ein), "The referenced identity does not exist."); return emails[ein]; } diff --git a/package-lock.json b/package-lock.json index b872fe0..b7f48ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -389,7 +389,8 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "cache-base": { "version": "1.0.1", @@ -434,7 +435,8 @@ "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true }, "caseless": { "version": "0.12.0", @@ -556,6 +558,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1", @@ -886,6 +889,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -1327,7 +1331,6 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, "requires": { "cross-spawn": "^5.0.1", "get-stream": "^3.0.0", @@ -1342,7 +1345,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, "requires": { "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", @@ -1491,6 +1493,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" @@ -1562,7 +1565,7 @@ }, "fs-extra": { "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "resolved": "http://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", "requires": { "graceful-fs": "^4.1.2", @@ -2134,8 +2137,7 @@ "get-stream": { "version": "3.0.0", "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" }, "get-value": { "version": "2.0.6", @@ -2389,7 +2391,8 @@ "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true }, "http-signature": { "version": "1.2.0", @@ -2505,7 +2508,8 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true }, "is-binary-path": { "version": "1.0.1", @@ -2526,6 +2530,7 @@ "version": "1.0.0", "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, "requires": { "builtin-modules": "^1.0.0" } @@ -2684,8 +2689,7 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-typedarray": { "version": "1.0.0", @@ -2696,7 +2700,8 @@ "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true }, "is-windows": { "version": "1.0.2", @@ -2713,8 +2718,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { "version": "2.1.0", @@ -2939,6 +2943,7 @@ "version": "1.1.0", "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -2951,7 +2956,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -2960,8 +2964,7 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" } } }, @@ -2974,7 +2977,8 @@ "lodash.assign": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true }, "log-driver": { "version": "1.2.7", @@ -2986,7 +2990,6 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, "requires": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" @@ -3027,7 +3030,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, "requires": { "mimic-fn": "^1.0.0" } @@ -3076,8 +3078,7 @@ "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" }, "minimalistic-assert": { "version": "1.0.1", @@ -3228,6 +3229,7 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, "requires": { "hosted-git-info": "^2.1.4", "is-builtin-module": "^1.0.0", @@ -3248,7 +3250,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, "requires": { "path-key": "^2.0.0" } @@ -3394,6 +3395,7 @@ "version": "1.4.0", "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, "requires": { "lcid": "^1.0.0" } @@ -3407,14 +3409,12 @@ "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, "requires": { "p-try": "^1.0.0" } @@ -3423,7 +3423,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, "requires": { "p-limit": "^1.1.0" } @@ -3431,8 +3430,7 @@ "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, "parse-glob": { "version": "3.0.4", @@ -3450,6 +3448,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, "requires": { "error-ex": "^1.2.0" } @@ -3464,6 +3463,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, "requires": { "pinkie-promise": "^2.0.0" } @@ -3482,8 +3482,7 @@ "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, "path-parse": { "version": "1.0.6", @@ -3495,6 +3494,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "pify": "^2.0.0", @@ -3516,17 +3516,20 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, "requires": { "pinkie": "^2.0.0" } @@ -3579,8 +3582,7 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "psl": { "version": "1.1.29", @@ -3629,6 +3631,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, "requires": { "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", @@ -3639,6 +3642,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, "requires": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" @@ -4067,9 +4071,9 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, "require-main-filename": { "version": "1.0.1", @@ -4264,7 +4268,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -4272,8 +4275,7 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shelljs": { "version": "0.7.8", @@ -4289,8 +4291,7 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "slice-ansi": { "version": "1.0.0", @@ -4445,15 +4446,110 @@ "dev": true }, "solc": { - "version": "0.4.25", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.25.tgz", - "integrity": "sha512-jU1YygRVy6zatgXrLY2rRm7HW1d7a8CkkEgNJwvH2VLpWhMFsMdWcJn6kUqZwcSz/Vm+w89dy7Z/aB5p6AFTrg==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.5.0.tgz", + "integrity": "sha512-mdLHDl9WeYrN+FIKcMc9PlPfnA9DG9ur5QpCDKcv6VC4RINAsTF4EMuXMZMKoQTvZhtLyJIVH/BZ+KU830Z8Xg==", "requires": { "fs-extra": "^0.30.0", + "keccak": "^1.0.2", "memorystream": "^0.3.1", - "require-from-string": "^1.1.0", - "semver": "^5.3.0", - "yargs": "^4.7.1" + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "yargs": "^11.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "yargs": { + "version": "11.1.0", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "requires": { + "camelcase": "^4.1.0" + } + } } }, "solidity-coverage": { @@ -4711,6 +4807,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", + "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -4719,12 +4816,14 @@ "spdx-exceptions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true }, "spdx-expression-parse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -4733,7 +4832,8 @@ "spdx-license-ids": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", - "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==" + "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", + "dev": true }, "split-string": { "version": "3.1.0", @@ -4819,6 +4919,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, "requires": { "is-utf8": "^0.2.0" } @@ -4826,8 +4927,7 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-hex-prefix": { "version": "1.0.0", @@ -5002,13 +5102,13 @@ "dev": true }, "truffle": { - "version": "5.0.0-beta.1", - "resolved": "https://registry.npmjs.org/truffle/-/truffle-5.0.0-beta.1.tgz", - "integrity": "sha512-U9vNwUAX0kb+pgpUWsWDFQeU2XeCHYm4swVxQdRi37mDQCOedEVgiE+Lr87LNQMAIuAY+8sG/9KF7HwVks0ncQ==", + "version": "5.0.0-beta.2", + "resolved": "https://registry.npmjs.org/truffle/-/truffle-5.0.0-beta.2.tgz", + "integrity": "sha512-D15MsJeKWRNxbx2Vmy50gH8z4gjBYecJIUADBBBL593hkVnhZ1ADgkIujCvvrbD6Pj69Vg5Ky/nJXl7M9TCjsg==", "requires": { "mocha": "^4.1.0", "original-require": "1.0.1", - "solc": "0.4.25" + "solc": "^0.5.0" } }, "tslib": { @@ -5192,6 +5292,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -5212,7 +5313,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "requires": { "isexe": "^2.0.0" } @@ -5220,12 +5320,14 @@ "which-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true }, "window-size": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=" + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "dev": true }, "wordwrap": { "version": "1.0.0", @@ -5276,13 +5378,13 @@ "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, "yargs": { "version": "4.8.1", "resolved": "http://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "dev": true, "requires": { "cliui": "^3.2.0", "decamelize": "^1.1.1", @@ -5304,6 +5406,7 @@ "version": "2.4.1", "resolved": "http://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "dev": true, "requires": { "camelcase": "^3.0.0", "lodash.assign": "^4.0.6" diff --git a/package.json b/package.json index 4eaf2f7..c8c7575 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "ajv": "^6.5.4", "ethereumjs-util": "^5.2.0", "ganache-cli": "^6.1.8", - "truffle": "^5.0.0-beta.1" + "truffle": "^5.0.0-beta.2" }, "devDependencies": { "coveralls": "^3.0.2", diff --git a/test/IdentityRegistry.js b/test/IdentityRegistry.js index feceda4..e6b88cc 100644 --- a/test/IdentityRegistry.js +++ b/test/IdentityRegistry.js @@ -82,7 +82,7 @@ contract('Testing Identity', function (accounts) { it('Identity can be created', async function () { // test user creation const createdIdentity = await instances.IdentityRegistry.createIdentity.call( - identity.recoveryAddress.address, identity.providers[0].address, [], + identity.recoveryAddress.address, [identity.providers[0].address], [], [], { from: identity.associatedAddresses[0].address } ) assert.isTrue(createdIdentity.eq(web3.utils.toBN(1)), 'Unexpected identity token user') @@ -102,7 +102,7 @@ contract('Testing Identity', function (accounts) { permissionString, identity.associatedAddresses[0].address, identity.associatedAddresses[0].private ) const createdIdentityDelegated = await instances.IdentityRegistry.createIdentityDelegated.call( - identity.recoveryAddress.address, identity.associatedAddresses[0].address, [], + identity.recoveryAddress.address, identity.associatedAddresses[0].address, [identity.providers[0].address], [], permission.v, permission.r, permission.s, timestamp, { from: identity.providers[0].address } ) @@ -125,7 +125,7 @@ contract('Testing Identity', function (accounts) { permissionString, identity.associatedAddresses[0].address, identity.associatedAddresses[0].private ) await instances.IdentityRegistry.createIdentityDelegated.call( - identity.recoveryAddress.address, identity.associatedAddresses[0].address, [], + identity.recoveryAddress.address, identity.associatedAddresses[0].address, [identity.providers[0].address], [], permission.v, permission.r, permission.s, timestamp, { from: identity.providers[0].address } ) @@ -155,7 +155,7 @@ contract('Testing Identity', function (accounts) { permissionString, identity.associatedAddresses[0].address, identity.associatedAddresses[0].private ) await instances.IdentityRegistry.createIdentityDelegated.call( - identity.recoveryAddress.address, identity.associatedAddresses[0].address, [], + identity.recoveryAddress.address, identity.associatedAddresses[0].address, [identity.providers[0].address], [], permission.v, permission.r, permission.s, timestamp, { from: identity.providers[0].address } ) @@ -171,7 +171,7 @@ contract('Testing Identity', function (accounts) { it('Identity created', async function () { await instances.IdentityRegistry.createIdentity( - identity.recoveryAddress.address, identity.providers[0].address, [], + identity.recoveryAddress.address, [identity.providers[0].address], [], { from: identity.associatedAddresses[0].address } ) @@ -187,7 +187,7 @@ contract('Testing Identity', function (accounts) { it('Identity created FAIL -- has an address', async function () { await instances.IdentityRegistry.createIdentity( - identity.recoveryAddress.address, identity.providers[0].address, [], + identity.recoveryAddress.address, [identity.providers[0].address], [], { from: identity.associatedAddresses[0].address } ) .then(() => assert.fail('got an EIN', 'transaction should fail')) diff --git a/test/examples/Resolvers/ERC1056.js b/test/examples/Resolvers/ERC1056.js index 80a8515..6c4fc21 100644 --- a/test/examples/Resolvers/ERC1056.js +++ b/test/examples/Resolvers/ERC1056.js @@ -29,7 +29,7 @@ contract('Testing ERC1056 Resolver', function (accounts) { const user = users[0] await instances.IdentityRegistry.createIdentity( - user.address, user.address, [instances.ERC1056.address], { from: user.address } + user.address, [user.address], [instances.ERC1056.address], { from: user.address } ) user.identity = web3.utils.toBN(1) diff --git a/test/examples/Resolvers/ERC725.js b/test/examples/Resolvers/ERC725.js index d76bd8c..92fcf3d 100644 --- a/test/examples/Resolvers/ERC725.js +++ b/test/examples/Resolvers/ERC725.js @@ -28,11 +28,11 @@ contract('Testing ERC725 Resolver', function (accounts) { const otherGuy = users[1] await instances.IdentityRegistry.createIdentity( - user.address, user.address, [instances.ERC725.address], { from: user.address } + user.address, [user.address], [instances.ERC725.address], { from: user.address } ) await instances.IdentityRegistry.createIdentity( - otherGuy.address, otherGuy.address, [instances.ERC725.address], { from: otherGuy.address } + otherGuy.address, [otherGuy.address], [instances.ERC725.address], { from: otherGuy.address } ) user.identity = web3.utils.toBN(1) diff --git a/truffle-config.js b/truffle-config.js index b931179..0cb8d3e 100644 --- a/truffle-config.js +++ b/truffle-config.js @@ -17,7 +17,7 @@ module.exports = { }, compilers: { solc: { - version: '0.4.24', + version: '0.5.0', settings: { optimizer: { enabled: true,