Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove property 'done' from driip settlement type #433

Merged
merged 1 commit into from
Aug 8, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Remove property done from driip settlement type
jijordre committed Aug 8, 2019

Verified

This commit was signed with the committer’s verified signature. The key has expired.
s3krit s3krit
commit 1429718fa0321152d2fd6ea87bea3de1204402a4
23 changes: 10 additions & 13 deletions contracts/DriipSettlementState.sol
Original file line number Diff line number Diff line change
@@ -60,7 +60,7 @@ contract DriipSettlementState is Ownable, Servable, CommunityVotable {
// -----------------------------------------------------------------------------------------------------------------
event InitSettlementEvent(DriipSettlementTypesLib.Settlement settlement);
event CompleteSettlementPartyEvent(address wallet, uint256 nonce, DriipSettlementTypesLib.SettlementRole settlementRole,
bool done, uint256 doneBlockNumber);
uint256 doneBlockNumber);
event SetMaxDriipNonceEvent(uint256 maxDriipNonce);
event UpdateMaxDriipNonceFromCommunityVoteEvent(uint256 maxDriipNonce);
event SetMaxNonceByWalletAndCurrencyEvent(address wallet, MonetaryTypesLib.Currency currency,
@@ -192,12 +192,11 @@ contract DriipSettlementState is Ownable, Servable, CommunityVotable {
settlements[index - 1].origin :
settlements[index - 1].target;

// Update party done and done block number properties
party.done = done;
// Update party done block number
party.doneBlockNumber = done ? block.number : 0;

// Emit event
emit CompleteSettlementPartyEvent(wallet, nonce, settlementRole, done, party.doneBlockNumber);
emit CompleteSettlementPartyEvent(wallet, nonce, settlementRole, party.doneBlockNumber);
}

/// @notice Gauge whether the settlement is done wrt the given wallet and nonce
@@ -216,11 +215,11 @@ contract DriipSettlementState is Ownable, Servable, CommunityVotable {
if (0 == index)
return false;

// Return done
// Return done status
return (
wallet == settlements[index - 1].origin.wallet ?
settlements[index - 1].origin.done :
settlements[index - 1].target.done
0 != settlements[index - 1].origin.doneBlockNumber :
0 != settlements[index - 1].target.doneBlockNumber
);
}

@@ -251,8 +250,8 @@ contract DriipSettlementState is Ownable, Servable, CommunityVotable {
// Require that wallet is party of the right role
require(wallet == settlementParty.wallet, "Wallet has wrong settlement role [DriipSettlementState.sol:252]");

// Return done
return settlementParty.done;
// Return done status
return 0 != settlementParty.doneBlockNumber;
}

/// @notice Get the done block number of the settlement party with the given wallet and nonce
@@ -451,8 +450,8 @@ contract DriipSettlementState is Ownable, Servable, CommunityVotable {

/// @notice Upgrade settlement from other driip settlement state instance
function upgradeSettlement(string memory settledKind, bytes32 settledHash,
address originWallet, uint256 originNonce, bool originDone, uint256 originDoneBlockNumber,
address targetWallet, uint256 targetNonce, bool targetDone, uint256 targetDoneBlockNumber)
address originWallet, uint256 originNonce, bool /*originDone*/, uint256 originDoneBlockNumber,
address targetWallet, uint256 targetNonce, bool /*targetDone*/, uint256 targetDoneBlockNumber)
public
onlyDeployer
{
@@ -474,11 +473,9 @@ contract DriipSettlementState is Ownable, Servable, CommunityVotable {
settlements[index].settledHash = settledHash;
settlements[index].origin.nonce = originNonce;
settlements[index].origin.wallet = originWallet;
settlements[index].origin.done = originDone;
settlements[index].origin.doneBlockNumber = originDoneBlockNumber;
settlements[index].target.nonce = targetNonce;
settlements[index].target.wallet = targetWallet;
settlements[index].target.done = targetDone;
settlements[index].target.doneBlockNumber = targetDoneBlockNumber;

// Emit event
1 change: 0 additions & 1 deletion contracts/DriipSettlementTypesLib.sol
Original file line number Diff line number Diff line change
@@ -22,7 +22,6 @@ library DriipSettlementTypesLib {
struct SettlementParty {
uint256 nonce;
address wallet;
bool done;
uint256 doneBlockNumber;
}

11 changes: 5 additions & 6 deletions contracts/test/MockedDriipSettlementState.sol
Original file line number Diff line number Diff line change
@@ -70,7 +70,6 @@ contract MockedDriipSettlementState {
settlements[index].origin :
settlements[index].target;

settlementParty.done = done;
settlementParty.doneBlockNumber = done ? block.number : 0;
}

@@ -84,7 +83,7 @@ contract MockedDriipSettlementState {

uint256 index = settlements.length - 1;

return (settlements[index - 1].origin.done || settlements[index - 1].target.done);
return (0 != settlements[index - 1].origin.doneBlockNumber || 0 != settlements[index - 1].target.doneBlockNumber);
}

function isSettlementPartyDone(address, uint256,
@@ -99,9 +98,9 @@ contract MockedDriipSettlementState {
uint256 index = settlements.length - 1;

if (DriipSettlementTypesLib.SettlementRole.Origin == settlementRole)
return settlements[index].origin.done;
return 0 != settlements[index].origin.doneBlockNumber;
else
return settlements[index].target.done;
return 0 != settlements[index].target.doneBlockNumber;
}

function _setSettlementPartyDone(DriipSettlementTypesLib.SettlementRole settlementRole, bool done)
@@ -112,9 +111,9 @@ contract MockedDriipSettlementState {
uint256 index = settlements.length - 1;

if (DriipSettlementTypesLib.SettlementRole.Origin == settlementRole)
settlements[index].origin.done = done;
settlements[index].origin.doneBlockNumber = done ? block.number : 0;
else
settlements[index].target.done = done;
settlements[index].target.doneBlockNumber = done ? block.number : 0;
}

function settlementPartyDoneBlockNumber(address, uint256)
24 changes: 12 additions & 12 deletions test/scenarios/DriipSettlementByPayment.js
Original file line number Diff line number Diff line change
@@ -659,10 +659,10 @@ module.exports = (glob) => {
settlement.settledHash.should.equal(payment.seals.operator.hash);
settlement.origin.nonce._bn.should.eq.BN(payment.sender.nonce._bn);
settlement.origin.wallet.should.equal(utils.getAddress(payment.sender.wallet));
settlement.origin.done.should.be.true;
settlement.origin.doneBlockNumber._bn.should.eq.BN(await provider.getBlockNumber());
settlement.target.nonce._bn.should.eq.BN(payment.recipient.nonce._bn);
settlement.target.wallet.should.equal(utils.getAddress(payment.recipient.wallet));
settlement.target.done.should.be.false;
settlement.target.doneBlockNumber._bn.should.eq.BN(0);

(await ethersDriipSettlementState.maxNonceByWalletAndCurrency(
payment.sender.wallet, payment.currency)
@@ -742,10 +742,10 @@ module.exports = (glob) => {
settlement.settledHash.should.equal(payment.seals.operator.hash);
settlement.origin.nonce._bn.should.eq.BN(payment.sender.nonce._bn);
settlement.origin.wallet.should.equal(utils.getAddress(payment.sender.wallet));
settlement.origin.done.should.be.true;
settlement.origin.doneBlockNumber._bn.should.eq.BN(await provider.getBlockNumber());
settlement.target.nonce._bn.should.eq.BN(payment.recipient.nonce._bn);
settlement.target.wallet.should.equal(utils.getAddress(payment.recipient.wallet));
settlement.target.done.should.be.false;
settlement.target.doneBlockNumber._bn.should.eq.BN(0);

(await ethersDriipSettlementState.maxNonceByWalletAndCurrency(
payment.sender.wallet, payment.currency)
@@ -827,10 +827,10 @@ module.exports = (glob) => {
settlement.settledHash.should.equal(payment.seals.operator.hash);
settlement.origin.nonce._bn.should.eq.BN(payment.sender.nonce._bn);
settlement.origin.wallet.should.equal(utils.getAddress(payment.sender.wallet));
settlement.origin.done.should.be.true;
settlement.origin.doneBlockNumber._bn.should.eq.BN(await provider.getBlockNumber());
settlement.target.nonce._bn.should.eq.BN(payment.recipient.nonce._bn);
settlement.target.wallet.should.equal(utils.getAddress(payment.recipient.wallet));
settlement.target.done.should.be.false;
settlement.target.doneBlockNumber._bn.should.eq.BN(0);

(await ethersDriipSettlementState.maxNonceByWalletAndCurrency(
payment.sender.wallet, payment.currency)
@@ -1081,10 +1081,10 @@ module.exports = (glob) => {
settlement.settledHash.should.equal(payment.seals.operator.hash);
settlement.origin.nonce._bn.should.eq.BN(payment.sender.nonce._bn);
settlement.origin.wallet.should.equal(utils.getAddress(payment.sender.wallet));
settlement.origin.done.should.be.true;
settlement.origin.doneBlockNumber._bn.should.eq.BN(await provider.getBlockNumber());
settlement.target.nonce._bn.should.eq.BN(payment.recipient.nonce._bn);
settlement.target.wallet.should.equal(utils.getAddress(payment.recipient.wallet));
settlement.target.done.should.be.false;
settlement.target.doneBlockNumber._bn.should.eq.BN(0);

(await ethersDriipSettlementState.maxNonceByWalletAndCurrency(
payment.sender.wallet, payment.currency)
@@ -1164,10 +1164,10 @@ module.exports = (glob) => {
settlement.settledHash.should.equal(payment.seals.operator.hash);
settlement.origin.nonce._bn.should.eq.BN(payment.sender.nonce._bn);
settlement.origin.wallet.should.equal(utils.getAddress(payment.sender.wallet));
settlement.origin.done.should.be.true;
settlement.origin.doneBlockNumber._bn.should.eq.BN(await provider.getBlockNumber());
settlement.target.nonce._bn.should.eq.BN(payment.recipient.nonce._bn);
settlement.target.wallet.should.equal(utils.getAddress(payment.recipient.wallet));
settlement.target.done.should.be.false;
settlement.target.doneBlockNumber._bn.should.eq.BN(0);

(await ethersDriipSettlementState.maxNonceByWalletAndCurrency(
payment.sender.wallet, payment.currency)
@@ -1249,10 +1249,10 @@ module.exports = (glob) => {
settlement.settledHash.should.equal(payment.seals.operator.hash);
settlement.origin.nonce._bn.should.eq.BN(payment.sender.nonce._bn);
settlement.origin.wallet.should.equal(utils.getAddress(payment.sender.wallet));
settlement.origin.done.should.be.true;
settlement.origin.doneBlockNumber._bn.should.eq.BN(await provider.getBlockNumber());
settlement.target.nonce._bn.should.eq.BN(payment.recipient.nonce._bn);
settlement.target.wallet.should.equal(utils.getAddress(payment.recipient.wallet));
settlement.target.done.should.be.false;
settlement.target.doneBlockNumber._bn.should.eq.BN(0);

(await ethersDriipSettlementState.maxNonceByWalletAndCurrency(
payment.sender.wallet, payment.currency)
8 changes: 4 additions & 4 deletions test/scenarios/DriipSettlementByTrade.js
Original file line number Diff line number Diff line change
@@ -658,10 +658,10 @@ module.exports = (glob) => {
settlement.settledHash.should.equal(trade.seal.hash);
settlement.origin.nonce._bn.should.eq.BN(trade.seller.nonce._bn);
settlement.origin.wallet.should.equal(utils.getAddress(trade.seller.wallet));
settlement.origin.done.should.be.false;
settlement.origin.doneBlockNumber._bn.should.eq.BN(0);
settlement.target.nonce._bn.should.eq.BN(trade.buyer.nonce._bn);
settlement.target.wallet.should.equal(utils.getAddress(trade.buyer.wallet));
settlement.target.done.should.be.true;
settlement.target.doneBlockNumber._bn.should.eq.BN(await provider.getBlockNumber());

(await ethersDriipSettlementState.maxNonceByWalletAndCurrency(
trade.buyer.wallet, trade.currencies.intended)
@@ -932,10 +932,10 @@ module.exports = (glob) => {
settlement.settledHash.should.equal(trade.seal.hash);
settlement.origin.nonce._bn.should.eq.BN(trade.seller.nonce._bn);
settlement.origin.wallet.should.equal(utils.getAddress(trade.seller.wallet));
settlement.origin.done.should.be.false;
settlement.origin.doneBlockNumber._bn.should.eq.BN(0);
settlement.target.nonce._bn.should.eq.BN(trade.buyer.nonce._bn);
settlement.target.wallet.should.equal(utils.getAddress(trade.buyer.wallet));
settlement.target.done.should.be.true;
settlement.target.doneBlockNumber._bn.should.eq.BN(await provider.getBlockNumber());

(await ethersDriipSettlementState.maxNonceByWalletAndCurrency(
trade.buyer.wallet, trade.currencies.intended)
10 changes: 4 additions & 6 deletions test/scenarios/DriipSettlementState.js
Original file line number Diff line number Diff line change
@@ -406,7 +406,7 @@ module.exports = (glob) => {
});

describe('if called with true as done value', () => {
it('should successfully set done of origin role and update its done block number', async () => {
it('should successfully update its done block number', async () => {
await ethersDriipSettlementState.completeSettlementParty(
glob.user_a, 1, mocks.settlementRoles.indexOf('Origin'), true
);
@@ -451,7 +451,7 @@ module.exports = (glob) => {
);
});

it('should successfully set done of origin role and update its done block number', async () => {
it('should successfully reset its done block number', async () => {
await ethersDriipSettlementState.completeSettlementParty(
glob.user_a, 1, mocks.settlementRoles.indexOf('Origin'), false
);
@@ -503,7 +503,7 @@ module.exports = (glob) => {
});

describe('if called with true as done value', () => {
it('should successfully set done of target role and update its done block number', async () => {
it('should successfully update its done block number', async () => {
await ethersDriipSettlementState.completeSettlementParty(
glob.user_b, 2, mocks.settlementRoles.indexOf('Target'), true
);
@@ -548,7 +548,7 @@ module.exports = (glob) => {
);
});

it('should successfully set done of target role and update its done block number', async () => {
it('should successfully reset its done block number', async () => {
await ethersDriipSettlementState.completeSettlementParty(
glob.user_b, 2, mocks.settlementRoles.indexOf('Target'), false
);
@@ -871,11 +871,9 @@ module.exports = (glob) => {
settlement.settledHash.should.equal(mocks.hash1);
settlement.origin.nonce._bn.should.eq.BN(1);
settlement.origin.wallet.should.equal(utils.getAddress(glob.user_a));
settlement.origin.done.should.be.true;
settlement.origin.doneBlockNumber._bn.should.be.eq.BN(100);
settlement.target.nonce._bn.should.eq.BN(2);
settlement.target.wallet.should.equal(utils.getAddress(glob.user_b));
settlement.target.done.should.be.false;
settlement.target.doneBlockNumber._bn.should.be.eq.BN(200);
});
});