Skip to content

Commit

Permalink
Merge branch 'release/v1.2.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
Tschuck committed Nov 23, 2018
2 parents 9a4c705 + 385e87b commit 727af51
Show file tree
Hide file tree
Showing 61 changed files with 2,890 additions and 331 deletions.
12 changes: 12 additions & 0 deletions VERSIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,25 @@
### Fixes
### Deprecations

## Version 1.2.0
### Features
- add ERC725/735 compliant Claims and Identity contracts
- include bytecode within compiled.js files for `claims/OriginIdentity.sol:OriginIdentity`
- add `TicketVendorInterface`

### Deprecations
- use solc 0.4.24 as compiler version
- contracts have been updated accordingly to match solc 0.4.24
- make compiler versions upward compatible (`^solc 0.4.24`)

## Version 1.1.3
### Features
- add permissions to `TestDataContractFactory` for additional test for user management

### Fixes
- fix `setUserRole` issue in `DSRolesPerContract`, that could produce invalid user indices when removing accounts from roles


## Version 1.1.2
### Fixes
- fix destinationPath handling for cases when output file doesn't exist
Expand Down
2 changes: 1 addition & 1 deletion contracts/AbstractDescribed.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
*/

pragma solidity 0.4.20;
pragma solidity ^0.4.24;


/// @title abstract contract for holding a DBCP description
Expand Down
16 changes: 8 additions & 8 deletions contracts/AbstractENS.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,16 @@
*/

pragma solidity ^0.4.0;
pragma solidity ^0.4.24;

contract AbstractENS {
function owner(bytes32) constant returns(address);
function resolver(bytes32) constant returns(address);
function ttl(bytes32) constant returns(uint64);
function setOwner(bytes32, address);
function setSubnodeOwner(bytes32, bytes32, address);
function setResolver(bytes32, address);
function setTTL(bytes32, uint64);
function owner(bytes32) public constant returns(address);
function resolver(bytes32) public constant returns(address);
function ttl(bytes32) public constant returns(uint64);
function setOwner(bytes32, address) public;
function setSubnodeOwner(bytes32, bytes32, address) public;
function setResolver(bytes32, address) public;
function setTTL(bytes32, uint64) public;

event Transfer(bytes32 indexed node, address newOwner);
event NewOwner(bytes32 indexed node, bytes32 indexed label, address newOwner);
Expand Down
2 changes: 1 addition & 1 deletion contracts/AbstractPublicResolver.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
*/

pragma solidity ^0.4.0;
pragma solidity ^0.4.24;

contract AbstractPublicResolver {
function PublicResolver(address);
Expand Down
34 changes: 17 additions & 17 deletions contracts/BaseContract.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
*/

pragma solidity 0.4.20;
pragma solidity ^0.4.24;

import "./BaseContractInterface.sol";
import "./BusinessCenterInterface.sol";
Expand All @@ -36,7 +36,7 @@ contract BaseContract is BaseContractInterface, EnsReader {
// web3.utils.soliditySha3('profile')
bytes32 private constant PROFILE_LABEL = 0xe3dd854eb9d23c94680b3ec632b9072842365d9a702ab0df7da8bc398ee52c7d;

function BaseContract(address _provider, bytes32 _contractType, bytes32 _contractDescription, address ensAddress) {
constructor(address _provider, bytes32 _contractType, bytes32 _contractDescription, address ensAddress) public {
contractState = ContractState.Draft;
created = now;
contractType = _contractType;
Expand All @@ -51,19 +51,19 @@ contract BaseContract is BaseContractInterface, EnsReader {
setEns(ensAddress);
}

function getProvider() constant returns (address provider) {
function getProvider() public constant returns (address provider) {
return owner;
}

function changeConsumerState(address consumer, ConsumerState state) auth {
function changeConsumerState(address consumer, ConsumerState state) public auth {
ConsumerState currentState = consumerState[consumer];
if (msg.sender == consumer) {
if (currentState == ConsumerState.Initial && state == ConsumerState.Draft ||
currentState == ConsumerState.Draft && state == ConsumerState.Active ||
currentState == ConsumerState.Draft && state == ConsumerState.Rejected ||
state == ConsumerState.Terminated) {
consumerState[msg.sender] = state;
StateshiftEvent(uint(state), msg.sender);
emit StateshiftEvent(uint(state), msg.sender);
} else {
assert(false);
}
Expand All @@ -72,35 +72,35 @@ contract BaseContract is BaseContractInterface, EnsReader {
if (currentState == ConsumerState.Initial && state == ConsumerState.Draft ||
state == ConsumerState.Terminated) {
consumerState[consumer] = state;
StateshiftEvent(uint(state), consumer);
emit StateshiftEvent(uint(state), consumer);
} else {
assert(false);
}
}
}

function changeContractState(ContractState newState) auth {
function changeContractState(ContractState newState) public auth {
contractState = newState;
StateshiftEvent(uint(newState), msg.sender);
emit StateshiftEvent(uint(newState), msg.sender);
}

function isConsumer(address consumer) constant returns (bool) {
function isConsumer(address consumer) public constant returns (bool) {
return consumer2index[consumer] != 0;
}

function getConsumerState(address consumer) constant returns (ConsumerState state) {
function getConsumerState(address consumer) public constant returns (ConsumerState state) {
return consumerState[consumer];
}

function getMyState() constant returns (ConsumerState state) {
function getMyState() public constant returns (ConsumerState state) {
if (msg.sender == owner) {
return ConsumerState.Active;
} else {
return consumerState[msg.sender];
}
}

function inviteConsumer(address consumer, address businessCenter) {
function inviteConsumer(address consumer, address businessCenter) public {
// throw if not owner and not allowConsumerInvite
assert(msg.sender == owner || allowConsumerInvite);

Expand All @@ -110,9 +110,9 @@ contract BaseContract is BaseContractInterface, EnsReader {
// thow if member and allowConsumerInvite disabled
assert(msg.sender == owner || !isConsumer(msg.sender) || allowConsumerInvite);

// throw if invitee doesn't know contact / blocks this user
ProfileIndexInterface pIndex = ProfileIndexInterface(getAddr(PROFILE_LABEL));
DataContractInterface profile = DataContractInterface(pIndex.getProfile(consumer));
// --> disabled for now // throw if invitee doesn't know contact / blocks this user
// ProfileIndexInterface pIndex = ProfileIndexInterface(getAddr(PROFILE_LABEL));
// DataContractInterface profile = DataContractInterface(pIndex.getProfile(consumer));
// if last bit is set, then invitee has set its known flag for msg.sender to true
// assert((profile.getMappingValue(CONTACTS_LABEL, keccak256(msg.sender)) & 1) == 1);

Expand All @@ -135,10 +135,10 @@ contract BaseContract is BaseContractInterface, EnsReader {
// update permissions
DSRolesPerContract roles = DSRolesPerContract(authority);
roles.setUserRole(consumer, MEMBER_ROLE, true);
StateshiftEvent(uint(ConsumerState.Draft), consumer);
emit StateshiftEvent(uint(ConsumerState.Draft), consumer);
}

function removeConsumer(address consumer, address businessCenter) auth {
function removeConsumer(address consumer, address businessCenter) public auth {
assert(isConsumer(consumer));

uint lastId = consumerCount--;
Expand Down
2 changes: 1 addition & 1 deletion contracts/BaseContractFactory.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
*/

pragma solidity 0.4.20;
pragma solidity ^0.4.24;

import "./BaseContractFactoryInterface.sol";
import "./BusinessCenterInterface.sol";
Expand Down
4 changes: 2 additions & 2 deletions contracts/BaseContractFactoryInterface.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@
*/

pragma solidity ^0.4.0;
pragma solidity ^0.4.24;

contract BaseContractFactoryInterface {
uint public VERSION_ID;

event ContractCreated(bytes32 contractInfo, address newAddress);

function createContract(address businessCenter, address provider, bytes32 contractDescription, address ensAddress) returns (address);
function createContract(address businessCenter, address provider, bytes32 contractDescription, address ensAddress) public returns (address);
}
2 changes: 1 addition & 1 deletion contracts/BaseContractInterface.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
*/

pragma solidity 0.4.20;
pragma solidity ^0.4.24;

import "./Described.sol";
import "./Shared.sol";
Expand Down
30 changes: 18 additions & 12 deletions contracts/BusinessCenter.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
*/

pragma solidity 0.4.20;
pragma solidity ^0.4.24;

import "./BaseContractInterface.sol";
import "./BusinessCenterInterface.sol";
Expand Down Expand Up @@ -51,7 +51,7 @@ contract BusinessCenter is BusinessCenterInterface, EnsReader, DSAuth {
bytes32 public rootDomain;
DataStoreIndex public db;

function BusinessCenter(bytes32 domain, address ensAddress) public {
constructor(bytes32 domain, address ensAddress) public {
VERSION_ID = 2;
rootDomain = domain;
setEns(ensAddress);
Expand Down Expand Up @@ -107,7 +107,9 @@ contract BusinessCenter is BusinessCenterInterface, EnsReader, DSAuth {
}

function cancel() public auth {
var (memberIndex, okay) = db.listIndexOf(MEMBER_LABEL, keccak256(bytes32(msg.sender)));
uint memberIndex;
bool okay;
(memberIndex, okay) = db.listIndexOf(MEMBER_LABEL, keccak256(abi.encodePacked(bytes32(msg.sender))));
assert(okay);
db.listEntryRemove(MEMBER_LABEL, memberIndex);
setMyProfile(bytes32(0));
Expand All @@ -132,7 +134,7 @@ contract BusinessCenter is BusinessCenterInterface, EnsReader, DSAuth {
// used when inviting new members or when a new contract is created
function registerContractMember(address _contract, address _member, bytes32 _contractType) public auth {
// set address in members index
bytes32 label = keccak256(MEMBER_LABEL, keccak256(bytes32(_member)));
bytes32 label = keccak256(abi.encodePacked(MEMBER_LABEL, keccak256(abi.encodePacked(bytes32(_member)))));
DataStoreIndex userIndex = DataStoreIndex(db.indexGet(label));
db.indexMakeModerator(label);
userIndex.listEntryAdd(_contractType, bytes32(_contract));
Expand All @@ -147,12 +149,14 @@ contract BusinessCenter is BusinessCenterInterface, EnsReader, DSAuth {
function removeContractMember(address _contract, address _member, bytes32 _contractType) public auth {
assert(isMember(_member) && isContract(_contract));

bytes32 label = keccak256(MEMBER_LABEL, keccak256(bytes32(_member)));
bytes32 label = keccak256(abi.encodePacked(MEMBER_LABEL, keccak256(abi.encodePacked(bytes32(_member)))));
DataStoreIndex userIndex = DataStoreIndex(db.indexGet(label));

BaseContractInterface contractInterface = BaseContractInterface(_contract);
bytes32 contractTypeLabel = contractInterface.contractType();
var (index, okay) = userIndex.listIndexOf(contractTypeLabel, bytes32(_contract));
uint index;
bool okay;
(index, okay) = userIndex.listIndexOf(contractTypeLabel, bytes32(_contract));
assert(okay);

db.indexMakeModerator(label);
Expand Down Expand Up @@ -185,7 +189,7 @@ contract BusinessCenter is BusinessCenterInterface, EnsReader, DSAuth {
}

function getMyIndex() public constant returns (DataStoreIndex) {
bytes32 keyForMemberIndex = keccak256(MEMBER_LABEL, keccak256(bytes32(msg.sender)));
bytes32 keyForMemberIndex = keccak256(abi.encodePacked(MEMBER_LABEL, keccak256(abi.encodePacked(bytes32(msg.sender)))));
return DataStoreIndex(db.indexGet(keyForMemberIndex));
}

Expand All @@ -199,21 +203,23 @@ contract BusinessCenter is BusinessCenterInterface, EnsReader, DSAuth {

// check if an address is a member
function isMember(address _member) public constant returns (bool) {
var (, memberOkay) = db.listIndexOf(MEMBER_LABEL, keccak256(bytes32(_member)));
bool memberOkay;
(, memberOkay) = db.listIndexOf(MEMBER_LABEL, keccak256(abi.encodePacked(bytes32(_member))));
return memberOkay;
}

// check if an address is a contract
function isContract(address _contract) public constant returns (bool) {
var (, contractOkay) = db.listIndexOf(CONTRACT_LABEL, bytes32(_contract));
bool contractOkay;
(, contractOkay) = db.listIndexOf(CONTRACT_LABEL, bytes32(_contract));
return contractOkay;
}

function addMember(address newMember) private {
assert(!isMember(newMember));
db.listEntryAdd(MEMBER_LABEL, keccak256(bytes32(newMember)));
db.listEntryAdd(MEMBER_LABEL, keccak256(abi.encodePacked(bytes32(newMember))));

bytes32 keyForMemberIndex = keccak256(MEMBER_LABEL, keccak256(bytes32(newMember)));
bytes32 keyForMemberIndex = keccak256(abi.encodePacked(MEMBER_LABEL, keccak256(abi.encodePacked(bytes32(newMember)))));

// create user index for own db
DataStoreIndex localUserIndex;
Expand Down Expand Up @@ -249,6 +255,6 @@ contract BusinessCenter is BusinessCenterInterface, EnsReader, DSAuth {
}

function getMembersAddressIndex(address member) private constant returns(DataStoreIndex) {
return DataStoreIndex(address(db.containerGet(keccak256(MEMBER_LABEL, bytes32(member)))));
return DataStoreIndex(address(db.containerGet(keccak256(abi.encodePacked(MEMBER_LABEL, bytes32(member))))));
}
}
4 changes: 2 additions & 2 deletions contracts/BusinessCenterFactory.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
*/

pragma solidity 0.4.20;
pragma solidity ^0.4.24;

import "./BusinessCenter.sol";
import "./DSRolesPerContract.sol";
Expand All @@ -38,7 +38,7 @@ contract BusinessCenterFactory {
newBusinessCenter.setOwner(msg.sender);
roles.setAuthority(roles);
roles.setOwner(msg.sender);
ContractCreated(newBusinessCenter);
emit ContractCreated(newBusinessCenter);
return newBusinessCenter;
}

Expand Down
2 changes: 1 addition & 1 deletion contracts/BusinessCenterInterface.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
*/

pragma solidity 0.4.20;
pragma solidity ^0.4.24;

import "./Core.sol";
import "./DataStoreIndex.sol";
Expand Down
18 changes: 9 additions & 9 deletions contracts/Core.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,19 @@
*/

pragma solidity ^0.4.0;
pragma solidity ^0.4.24;

// empty contract for keeping filename -> contract name behavior
contract Core {}

contract Owned {
address public owner;

function Owned() {
constructor() public {
owner = msg.sender;
}

function transferOwnership(address newOwner) only_owner {
function transferOwnership(address newOwner) public only_owner {
owner = newOwner;
}

Expand All @@ -40,27 +40,27 @@ contract Owned {
}

contract OwnedMortal is Owned {
function kill() only_owner {
suicide(owner);
function kill() public only_owner {
selfdestruct(owner);
}
}

contract OwnedModerated is Owned {
mapping(address => bool) public moderators;

function addModerator(address newModerator) only_owner {
function addModerator(address newModerator) public only_owner {
moderators[newModerator] = true;
}

function removeModerator(address newModerator) only_owner {
function removeModerator(address newModerator) public only_owner {
delete moderators[newModerator];
}

function removeModeratorship() only_owner_or_moderator {
function removeModeratorship() public only_owner_or_moderator {
delete moderators[msg.sender];
}

function transferModeratorship(address newModerator) only_owner_or_moderator {
function transferModeratorship(address newModerator) public only_owner_or_moderator {
delete moderators[msg.sender];
moderators[newModerator] = true;
}
Expand Down
Loading

0 comments on commit 727af51

Please sign in to comment.