@0xcert/ethereum-erc20-contracts
Advanced tools
Comparing version 2.0.0-alpha10 to 2.0.0-alpha11
{ | ||
"files": { | ||
"packages/0xcert-ethereum-erc20-contracts/.solhint.json": "c72aedffae70ae4b1e2830449ec0e140eb7fb14a", | ||
"packages/0xcert-ethereum-erc20-contracts/CHANGELOG.json": "1b9c4f3d324b9672385395a2d5a53a294317ae46", | ||
"packages/0xcert-ethereum-erc20-contracts/CHANGELOG.md": "2b4af57c71e113c6a311b89508376329fb773ffe", | ||
"packages/0xcert-ethereum-erc20-contracts/CHANGELOG.json": "e1a650c23e6f26486b57740ae567c85b0f1f7bed", | ||
"packages/0xcert-ethereum-erc20-contracts/CHANGELOG.md": "e5936a4868a7a9f70cf391d8a1ffb9c7d30e0ace", | ||
"packages/0xcert-ethereum-erc20-contracts/README.md": "2a7e42a331e6ff588f7630463a89503289377d2b", | ||
"packages/0xcert-ethereum-erc20-contracts/nodemon.json": "82b893373db9861f1df4b55d8ea68a5d37b118de", | ||
"packages/0xcert-ethereum-erc20-contracts/package.json": "34b5892a41fe5e6aa468b38134a3c2defd06ff1e", | ||
"packages/0xcert-ethereum-erc20-contracts/src/contracts/dapp-token.sol": "87d29f5fa3c96e2adfcc1fb2e4374312a80fac0b", | ||
"packages/0xcert-ethereum-erc20-contracts/package.json": "bbf83471852a2cfa334119fa2e2acff7b0d5d18a", | ||
"packages/0xcert-ethereum-erc20-contracts/src/contracts/dapp-token.sol": "3e01b0af23caaf80ca3c173b22429e3082bc2dce", | ||
"packages/0xcert-ethereum-erc20-contracts/src/contracts/erc20.sol": "cb253165aa2138c7aca2295cd3962dfc6ba0cd37", | ||
@@ -17,3 +17,3 @@ "packages/0xcert-ethereum-erc20-contracts/src/contracts/migration-receiver.sol": "309212c841e90f04bb3979c4ebeb522de59851a8", | ||
"packages/0xcert-ethereum-erc20-contracts/src/index.ts": "a7b884b8a2b9ec2a03c20192d83ff3d49c3b6cdd", | ||
"packages/0xcert-ethereum-erc20-contracts/src/tests/dapp-token.test.ts": "02b009dbe6553e8c9761c80cf2208af1b9f3b212", | ||
"packages/0xcert-ethereum-erc20-contracts/src/tests/dapp-token.test.ts": "7bcd6365ea141c4da5562969794837d8133f6105", | ||
"packages/0xcert-ethereum-erc20-contracts/src/tests/helpers/common.ts": "28cfef796c13a9ec6b38a6623bab6d270ac6c202", | ||
@@ -23,5 +23,5 @@ "packages/0xcert-ethereum-erc20-contracts/src/tests/token.test.ts": "a7b344c14e2f77ba72bc66e39133d137c65e7cb3", | ||
"packages/0xcert-ethereum-erc20-contracts/tslint.json": "c57b3f0cdb7aa74ab2ab02888380f613589cbe66", | ||
"common/config/rush/npm-shrinkwrap.json": "10e77fb392b1023ff1a95e20cbcbb3968bb56b29" | ||
"common/config/rush/npm-shrinkwrap.json": "5ebb59598d73b33f33b0bf5b57c661ec3bb47a91" | ||
}, | ||
"arguments": "npm run clean && npx specron compile && npx tsc " | ||
} |
{ | ||
"files": { | ||
"packages/0xcert-ethereum-erc20-contracts/.solhint.json": "c72aedffae70ae4b1e2830449ec0e140eb7fb14a", | ||
"packages/0xcert-ethereum-erc20-contracts/CHANGELOG.json": "1b9c4f3d324b9672385395a2d5a53a294317ae46", | ||
"packages/0xcert-ethereum-erc20-contracts/CHANGELOG.md": "2b4af57c71e113c6a311b89508376329fb773ffe", | ||
"packages/0xcert-ethereum-erc20-contracts/CHANGELOG.json": "e1a650c23e6f26486b57740ae567c85b0f1f7bed", | ||
"packages/0xcert-ethereum-erc20-contracts/CHANGELOG.md": "e5936a4868a7a9f70cf391d8a1ffb9c7d30e0ace", | ||
"packages/0xcert-ethereum-erc20-contracts/README.md": "2a7e42a331e6ff588f7630463a89503289377d2b", | ||
"packages/0xcert-ethereum-erc20-contracts/nodemon.json": "82b893373db9861f1df4b55d8ea68a5d37b118de", | ||
"packages/0xcert-ethereum-erc20-contracts/package.json": "34b5892a41fe5e6aa468b38134a3c2defd06ff1e", | ||
"packages/0xcert-ethereum-erc20-contracts/src/contracts/dapp-token.sol": "87d29f5fa3c96e2adfcc1fb2e4374312a80fac0b", | ||
"packages/0xcert-ethereum-erc20-contracts/package.json": "bbf83471852a2cfa334119fa2e2acff7b0d5d18a", | ||
"packages/0xcert-ethereum-erc20-contracts/src/contracts/dapp-token.sol": "3e01b0af23caaf80ca3c173b22429e3082bc2dce", | ||
"packages/0xcert-ethereum-erc20-contracts/src/contracts/erc20.sol": "cb253165aa2138c7aca2295cd3962dfc6ba0cd37", | ||
@@ -17,3 +17,3 @@ "packages/0xcert-ethereum-erc20-contracts/src/contracts/migration-receiver.sol": "309212c841e90f04bb3979c4ebeb522de59851a8", | ||
"packages/0xcert-ethereum-erc20-contracts/src/index.ts": "a7b884b8a2b9ec2a03c20192d83ff3d49c3b6cdd", | ||
"packages/0xcert-ethereum-erc20-contracts/src/tests/dapp-token.test.ts": "02b009dbe6553e8c9761c80cf2208af1b9f3b212", | ||
"packages/0xcert-ethereum-erc20-contracts/src/tests/dapp-token.test.ts": "7bcd6365ea141c4da5562969794837d8133f6105", | ||
"packages/0xcert-ethereum-erc20-contracts/src/tests/helpers/common.ts": "28cfef796c13a9ec6b38a6623bab6d270ac6c202", | ||
@@ -23,5 +23,5 @@ "packages/0xcert-ethereum-erc20-contracts/src/tests/token.test.ts": "a7b344c14e2f77ba72bc66e39133d137c65e7cb3", | ||
"packages/0xcert-ethereum-erc20-contracts/tslint.json": "c57b3f0cdb7aa74ab2ab02888380f613589cbe66", | ||
"common/config/rush/npm-shrinkwrap.json": "10e77fb392b1023ff1a95e20cbcbb3968bb56b29" | ||
"common/config/rush/npm-shrinkwrap.json": "5ebb59598d73b33f33b0bf5b57c661ec3bb47a91" | ||
}, | ||
"arguments": "npm run lint && npm run clean && npx specron compile && npx specron test " | ||
} |
@@ -5,4 +5,4 @@ { | ||
{ | ||
"version": "2.0.0-alpha10", | ||
"tag": "@0xcert/ethereum-erc20-contracts_v2.0.0-alpha10", | ||
"version": "2.0.0-alpha11", | ||
"tag": "@0xcert/ethereum-erc20-contracts_v2.0.0-alpha11", | ||
"date": "Wed, 19 Jun 2019 10:31:05 GMT", | ||
@@ -9,0 +9,0 @@ "comments": {} |
@@ -5,3 +5,3 @@ # Change Log - @0xcert/ethereum-erc20-contracts | ||
## 2.0.0-alpha10 | ||
## 2.0.0-alpha11 | ||
Wed, 19 Jun 2019 10:31:05 GMT | ||
@@ -8,0 +8,0 @@ |
@@ -14,3 +14,2 @@ "use strict"; | ||
const __1 = require(".."); | ||
const common = require("./helpers/common"); | ||
const spec = new spec_1.Spec(); | ||
@@ -328,129 +327,2 @@ spec.beforeEach((ctx) => __awaiter(void 0, void 0, void 0, function* () { | ||
})); | ||
spec.test('correctly approves with signature', (ctx) => __awaiter(void 0, void 0, void 0, function* () { | ||
const dappToken = ctx.get('dappToken'); | ||
const token = ctx.get('token'); | ||
const owner = ctx.get('owner'); | ||
const bob = ctx.get('bob'); | ||
const sara = ctx.get('sara'); | ||
const decimalsMul = ctx.get('decimalsMul'); | ||
const tokenAmount = decimalsMul.mul(new ctx.web3.utils.BN('100')); | ||
const feeAmount = decimalsMul.mul(new ctx.web3.utils.BN('10')); | ||
const seed = common.getCurrentTime(); | ||
const expiration = common.getCurrentTime() + 3600; | ||
yield token.instance.methods.approve(dappToken.receipt._address, tokenAmount.toString()).send({ from: owner }); | ||
yield dappToken.instance.methods.deposit(tokenAmount.toString(), owner).send({ from: owner }); | ||
const claim = yield dappToken.instance.methods.generateClaim(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration).call(); | ||
const signature = yield ctx.web3.eth.sign(claim, owner); | ||
const signatureData = { | ||
r: signature.substr(0, 66), | ||
s: `0x${signature.substr(66, 64)}`, | ||
v: parseInt(`0x${signature.substr(130, 2)}`) + 27, | ||
kind: 0, | ||
}; | ||
const signatureDataTuple = ctx.tuple(signatureData); | ||
const logs = yield dappToken.instance.methods.approveWithSignature(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration, signatureDataTuple).send({ from: bob }); | ||
const actualAllowance = yield dappToken.instance.methods.allowance(owner, sara).call(); | ||
const bobBalance = yield dappToken.instance.methods.balanceOf(bob).call(); | ||
ctx.not(logs.events.Approval, undefined); | ||
ctx.not(logs.events.Transfer, undefined); | ||
ctx.is(actualAllowance.toString(), tokenAmount.toString()); | ||
ctx.is(bobBalance.toString(), feeAmount.toString()); | ||
})); | ||
spec.test('fails approving with signature if signature is invalid', (ctx) => __awaiter(void 0, void 0, void 0, function* () { | ||
const dappToken = ctx.get('dappToken'); | ||
const token = ctx.get('token'); | ||
const owner = ctx.get('owner'); | ||
const bob = ctx.get('bob'); | ||
const sara = ctx.get('sara'); | ||
const decimalsMul = ctx.get('decimalsMul'); | ||
const tokenAmount = decimalsMul.mul(new ctx.web3.utils.BN('100')); | ||
const feeAmount = decimalsMul.mul(new ctx.web3.utils.BN('10')); | ||
const seed = common.getCurrentTime(); | ||
const expiration = common.getCurrentTime() + 3600; | ||
yield token.instance.methods.approve(dappToken.receipt._address, tokenAmount.toString()).send({ from: owner }); | ||
yield dappToken.instance.methods.deposit(tokenAmount.toString(), owner).send({ from: owner }); | ||
const claim = yield dappToken.instance.methods.generateClaim(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration).call(); | ||
const signature = yield ctx.web3.eth.sign(claim, bob); | ||
const signatureData = { | ||
r: signature.substr(0, 66), | ||
s: `0x${signature.substr(66, 64)}`, | ||
v: parseInt(`0x${signature.substr(130, 2)}`) + 27, | ||
kind: 0, | ||
}; | ||
const signatureDataTuple = ctx.tuple(signatureData); | ||
yield ctx.reverts(() => dappToken.instance.methods.approveWithSignature(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration, signatureDataTuple).send({ from: bob }), '010007'); | ||
})); | ||
spec.test('fails approving with signature if claim has expired', (ctx) => __awaiter(void 0, void 0, void 0, function* () { | ||
const dappToken = ctx.get('dappToken'); | ||
const token = ctx.get('token'); | ||
const owner = ctx.get('owner'); | ||
const bob = ctx.get('bob'); | ||
const sara = ctx.get('sara'); | ||
const decimalsMul = ctx.get('decimalsMul'); | ||
const tokenAmount = decimalsMul.mul(new ctx.web3.utils.BN('100')); | ||
const feeAmount = decimalsMul.mul(new ctx.web3.utils.BN('10')); | ||
const seed = common.getCurrentTime(); | ||
const expiration = common.getCurrentTime() - 3600; | ||
yield token.instance.methods.approve(dappToken.receipt._address, tokenAmount.toString()).send({ from: owner }); | ||
yield dappToken.instance.methods.deposit(tokenAmount.toString(), owner).send({ from: owner }); | ||
const claim = yield dappToken.instance.methods.generateClaim(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration).call(); | ||
const signature = yield ctx.web3.eth.sign(claim, owner); | ||
const signatureData = { | ||
r: signature.substr(0, 66), | ||
s: `0x${signature.substr(66, 64)}`, | ||
v: parseInt(`0x${signature.substr(130, 2)}`) + 27, | ||
kind: 0, | ||
}; | ||
const signatureDataTuple = ctx.tuple(signatureData); | ||
yield ctx.reverts(() => dappToken.instance.methods.approveWithSignature(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration, signatureDataTuple).send({ from: bob }), '010009'); | ||
})); | ||
spec.test('fails approving with signature if claim has already been performed', (ctx) => __awaiter(void 0, void 0, void 0, function* () { | ||
const dappToken = ctx.get('dappToken'); | ||
const token = ctx.get('token'); | ||
const owner = ctx.get('owner'); | ||
const bob = ctx.get('bob'); | ||
const sara = ctx.get('sara'); | ||
const decimalsMul = ctx.get('decimalsMul'); | ||
const tokenAmount = decimalsMul.mul(new ctx.web3.utils.BN('100')); | ||
const feeAmount = decimalsMul.mul(new ctx.web3.utils.BN('10')); | ||
const seed = common.getCurrentTime(); | ||
const expiration = common.getCurrentTime() + 3600; | ||
yield token.instance.methods.approve(dappToken.receipt._address, tokenAmount.toString()).send({ from: owner }); | ||
yield dappToken.instance.methods.deposit(tokenAmount.toString(), owner).send({ from: owner }); | ||
const claim = yield dappToken.instance.methods.generateClaim(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration).call(); | ||
const signature = yield ctx.web3.eth.sign(claim, owner); | ||
const signatureData = { | ||
r: signature.substr(0, 66), | ||
s: `0x${signature.substr(66, 64)}`, | ||
v: parseInt(`0x${signature.substr(130, 2)}`) + 27, | ||
kind: 0, | ||
}; | ||
const signatureDataTuple = ctx.tuple(signatureData); | ||
yield dappToken.instance.methods.approveWithSignature(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration, signatureDataTuple).send({ from: bob }); | ||
yield ctx.reverts(() => dappToken.instance.methods.approveWithSignature(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration, signatureDataTuple).send({ from: bob }), '010008'); | ||
})); | ||
spec.test('fails approving with signature if signature kind is invalid', (ctx) => __awaiter(void 0, void 0, void 0, function* () { | ||
const dappToken = ctx.get('dappToken'); | ||
const token = ctx.get('token'); | ||
const owner = ctx.get('owner'); | ||
const bob = ctx.get('bob'); | ||
const sara = ctx.get('sara'); | ||
const decimalsMul = ctx.get('decimalsMul'); | ||
const tokenAmount = decimalsMul.mul(new ctx.web3.utils.BN('100')); | ||
const feeAmount = decimalsMul.mul(new ctx.web3.utils.BN('10')); | ||
const seed = common.getCurrentTime(); | ||
const expiration = common.getCurrentTime() + 3600; | ||
yield token.instance.methods.approve(dappToken.receipt._address, tokenAmount.toString()).send({ from: owner }); | ||
yield dappToken.instance.methods.deposit(tokenAmount.toString(), owner).send({ from: owner }); | ||
const claim = yield dappToken.instance.methods.generateClaim(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration).call(); | ||
const signature = yield ctx.web3.eth.sign(claim, owner); | ||
const signatureData = { | ||
r: signature.substr(0, 66), | ||
s: `0x${signature.substr(66, 64)}`, | ||
v: parseInt(`0x${signature.substr(130, 2)}`) + 27, | ||
kind: 3, | ||
}; | ||
const signatureDataTuple = ctx.tuple(signatureData); | ||
yield ctx.reverts(() => dappToken.instance.methods.approveWithSignature(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration, signatureDataTuple).send({ from: bob })); | ||
})); | ||
spec.test('throws when trying to transfer more than available balance', (ctx) => __awaiter(void 0, void 0, void 0, function* () { | ||
@@ -457,0 +329,0 @@ const token = ctx.get('token'); |
{ | ||
"name": "@0xcert/ethereum-erc20-contracts", | ||
"version": "2.0.0-alpha10", | ||
"version": "2.0.0-alpha11", | ||
"description": "Smart contract implementation of the ERC-20 standard on the Ethereum blockchain.", | ||
@@ -21,2 +21,12 @@ "scripts": { | ||
}, | ||
"flattener": { | ||
"build": "./build", | ||
"match": [ | ||
"./src/**/*.sol" | ||
], | ||
"severities": [ | ||
"error", | ||
"warning" | ||
] | ||
}, | ||
"test": { | ||
@@ -67,5 +77,6 @@ "port": 8503, | ||
"devDependencies": { | ||
"@0xcert/ethereum-utils-contracts": "2.0.0-alpha10", | ||
"@0xcert/ethereum-utils-contracts": "2.0.0-alpha11", | ||
"@specron/cli": "0.9.0", | ||
"@specron/spec": "0.9.0", | ||
"@specron/flattener": "0.9.0", | ||
"solc": "0.5.11", | ||
@@ -72,0 +83,0 @@ "solhint": "2.3.0", |
@@ -389,144 +389,2 @@ import { Spec } from '@specron/spec'; | ||
spec.test('correctly approves with signature', async (ctx) => { | ||
const dappToken = ctx.get('dappToken'); | ||
const token = ctx.get('token'); | ||
const owner = ctx.get('owner'); | ||
const bob = ctx.get('bob'); | ||
const sara = ctx.get('sara'); | ||
const decimalsMul = ctx.get('decimalsMul'); | ||
const tokenAmount = decimalsMul.mul(new ctx.web3.utils.BN('100')); | ||
const feeAmount = decimalsMul.mul(new ctx.web3.utils.BN('10')); | ||
const seed = common.getCurrentTime(); | ||
const expiration = common.getCurrentTime() + 3600; | ||
await token.instance.methods.approve(dappToken.receipt._address, tokenAmount.toString()).send({ from: owner }); | ||
await dappToken.instance.methods.deposit(tokenAmount.toString(), owner).send({ from: owner }); | ||
const claim = await dappToken.instance.methods.generateClaim(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration).call(); | ||
const signature = await ctx.web3.eth.sign(claim, owner); | ||
const signatureData = { | ||
r: signature.substr(0, 66), | ||
s: `0x${signature.substr(66, 64)}`, | ||
v: parseInt(`0x${signature.substr(130, 2)}`) + 27, | ||
kind: 0, | ||
}; | ||
const signatureDataTuple = ctx.tuple(signatureData); | ||
const logs = await dappToken.instance.methods.approveWithSignature(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration, signatureDataTuple).send({ from: bob }); | ||
const actualAllowance = await dappToken.instance.methods.allowance(owner, sara).call(); | ||
const bobBalance = await dappToken.instance.methods.balanceOf(bob).call(); | ||
ctx.not(logs.events.Approval, undefined); | ||
ctx.not(logs.events.Transfer, undefined); | ||
ctx.is(actualAllowance.toString(), tokenAmount.toString()); | ||
ctx.is(bobBalance.toString(), feeAmount.toString()); | ||
}); | ||
spec.test('fails approving with signature if signature is invalid', async (ctx) => { | ||
const dappToken = ctx.get('dappToken'); | ||
const token = ctx.get('token'); | ||
const owner = ctx.get('owner'); | ||
const bob = ctx.get('bob'); | ||
const sara = ctx.get('sara'); | ||
const decimalsMul = ctx.get('decimalsMul'); | ||
const tokenAmount = decimalsMul.mul(new ctx.web3.utils.BN('100')); | ||
const feeAmount = decimalsMul.mul(new ctx.web3.utils.BN('10')); | ||
const seed = common.getCurrentTime(); | ||
const expiration = common.getCurrentTime() + 3600; | ||
await token.instance.methods.approve(dappToken.receipt._address, tokenAmount.toString()).send({ from: owner }); | ||
await dappToken.instance.methods.deposit(tokenAmount.toString(), owner).send({ from: owner }); | ||
const claim = await dappToken.instance.methods.generateClaim(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration).call(); | ||
const signature = await ctx.web3.eth.sign(claim, bob); | ||
const signatureData = { | ||
r: signature.substr(0, 66), | ||
s: `0x${signature.substr(66, 64)}`, | ||
v: parseInt(`0x${signature.substr(130, 2)}`) + 27, | ||
kind: 0, | ||
}; | ||
const signatureDataTuple = ctx.tuple(signatureData); | ||
await ctx.reverts(() => dappToken.instance.methods.approveWithSignature(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration, signatureDataTuple).send({ from: bob }), '010007'); | ||
}); | ||
spec.test('fails approving with signature if claim has expired', async (ctx) => { | ||
const dappToken = ctx.get('dappToken'); | ||
const token = ctx.get('token'); | ||
const owner = ctx.get('owner'); | ||
const bob = ctx.get('bob'); | ||
const sara = ctx.get('sara'); | ||
const decimalsMul = ctx.get('decimalsMul'); | ||
const tokenAmount = decimalsMul.mul(new ctx.web3.utils.BN('100')); | ||
const feeAmount = decimalsMul.mul(new ctx.web3.utils.BN('10')); | ||
const seed = common.getCurrentTime(); | ||
const expiration = common.getCurrentTime() - 3600; | ||
await token.instance.methods.approve(dappToken.receipt._address, tokenAmount.toString()).send({ from: owner }); | ||
await dappToken.instance.methods.deposit(tokenAmount.toString(), owner).send({ from: owner }); | ||
const claim = await dappToken.instance.methods.generateClaim(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration).call(); | ||
const signature = await ctx.web3.eth.sign(claim, owner); | ||
const signatureData = { | ||
r: signature.substr(0, 66), | ||
s: `0x${signature.substr(66, 64)}`, | ||
v: parseInt(`0x${signature.substr(130, 2)}`) + 27, | ||
kind: 0, | ||
}; | ||
const signatureDataTuple = ctx.tuple(signatureData); | ||
await ctx.reverts(() => dappToken.instance.methods.approveWithSignature(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration, signatureDataTuple).send({ from: bob }), '010009'); | ||
}); | ||
spec.test('fails approving with signature if claim has already been performed', async (ctx) => { | ||
const dappToken = ctx.get('dappToken'); | ||
const token = ctx.get('token'); | ||
const owner = ctx.get('owner'); | ||
const bob = ctx.get('bob'); | ||
const sara = ctx.get('sara'); | ||
const decimalsMul = ctx.get('decimalsMul'); | ||
const tokenAmount = decimalsMul.mul(new ctx.web3.utils.BN('100')); | ||
const feeAmount = decimalsMul.mul(new ctx.web3.utils.BN('10')); | ||
const seed = common.getCurrentTime(); | ||
const expiration = common.getCurrentTime() + 3600; | ||
await token.instance.methods.approve(dappToken.receipt._address, tokenAmount.toString()).send({ from: owner }); | ||
await dappToken.instance.methods.deposit(tokenAmount.toString(), owner).send({ from: owner }); | ||
const claim = await dappToken.instance.methods.generateClaim(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration).call(); | ||
const signature = await ctx.web3.eth.sign(claim, owner); | ||
const signatureData = { | ||
r: signature.substr(0, 66), | ||
s: `0x${signature.substr(66, 64)}`, | ||
v: parseInt(`0x${signature.substr(130, 2)}`) + 27, | ||
kind: 0, | ||
}; | ||
const signatureDataTuple = ctx.tuple(signatureData); | ||
await dappToken.instance.methods.approveWithSignature(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration, signatureDataTuple).send({ from: bob }); | ||
await ctx.reverts(() => dappToken.instance.methods.approveWithSignature(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration, signatureDataTuple).send({ from: bob }), '010008'); | ||
}); | ||
spec.test('fails approving with signature if signature kind is invalid', async (ctx) => { | ||
const dappToken = ctx.get('dappToken'); | ||
const token = ctx.get('token'); | ||
const owner = ctx.get('owner'); | ||
const bob = ctx.get('bob'); | ||
const sara = ctx.get('sara'); | ||
const decimalsMul = ctx.get('decimalsMul'); | ||
const tokenAmount = decimalsMul.mul(new ctx.web3.utils.BN('100')); | ||
const feeAmount = decimalsMul.mul(new ctx.web3.utils.BN('10')); | ||
const seed = common.getCurrentTime(); | ||
const expiration = common.getCurrentTime() + 3600; | ||
await token.instance.methods.approve(dappToken.receipt._address, tokenAmount.toString()).send({ from: owner }); | ||
await dappToken.instance.methods.deposit(tokenAmount.toString(), owner).send({ from: owner }); | ||
const claim = await dappToken.instance.methods.generateClaim(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration).call(); | ||
const signature = await ctx.web3.eth.sign(claim, owner); | ||
const signatureData = { | ||
r: signature.substr(0, 66), | ||
s: `0x${signature.substr(66, 64)}`, | ||
v: parseInt(`0x${signature.substr(130, 2)}`) + 27, | ||
kind: 3, | ||
}; | ||
const signatureDataTuple = ctx.tuple(signatureData); | ||
await ctx.reverts(() => dappToken.instance.methods.approveWithSignature(owner, sara, tokenAmount.toString(), feeAmount.toString(), seed, expiration, signatureDataTuple).send({ from: bob })); | ||
}); | ||
spec.test('throws when trying to transfer more than available balance', async (ctx) => { | ||
@@ -533,0 +391,0 @@ const token = ctx.get('token'); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
0
875832
10
9246