mirror of
git://holbrook.no/erc20-demurrage-token
synced 2024-11-17 22:46:45 +01:00
Compare commits
No commits in common. "dev-0.5.6" and "v0.5.4-beta.1+build.14fb2fe8eac1a47265f7128462fb6ca220b2b2c3" have entirely different histories.
dev-0.5.6
...
v0.5.4-bet
@ -1,5 +1,3 @@
|
|||||||
- 0.5.5
|
|
||||||
* Make allowance method public
|
|
||||||
- 0.5.4
|
- 0.5.4
|
||||||
* Add Transfer() event emission to sweep() in contract
|
* Add Transfer() event emission to sweep() in contract
|
||||||
- 0.5.3
|
- 0.5.3
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,6 +1,6 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
name = erc20-demurrage-token
|
name = erc20-demurrage-token
|
||||||
version = 0.5.6
|
version = 0.5.4
|
||||||
description = ERC20 token with redistributed continual demurrage
|
description = ERC20 token with redistributed continual demurrage
|
||||||
author = Louis Holbrook
|
author = Louis Holbrook
|
||||||
author_email = dev@holbrook.no
|
author_email = dev@holbrook.no
|
||||||
|
@ -308,30 +308,6 @@ class TestBasic(TestDemurrageDefault):
|
|||||||
self.assertEqual(r['status'], 1)
|
self.assertEqual(r['status'], 1)
|
||||||
|
|
||||||
|
|
||||||
def test_approve_max(self):
|
|
||||||
nonce_oracle = RPCNonceOracle(self.accounts[0], self.rpc)
|
|
||||||
c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle)
|
|
||||||
(tx_hash, o) = c.approve(self.address, self.accounts[0], self.accounts[1], int.from_bytes(b'\xff' * 32, byteorder='big'))
|
|
||||||
self.rpc.do(o)
|
|
||||||
o = receipt(tx_hash)
|
|
||||||
r = self.rpc.do(o)
|
|
||||||
self.assertEqual(r['status'], 1)
|
|
||||||
|
|
||||||
(tx_hash, o) = c.approve(self.address, self.accounts[0], self.accounts[1], 0)
|
|
||||||
self.rpc.do(o)
|
|
||||||
o = receipt(tx_hash)
|
|
||||||
r = self.rpc.do(o)
|
|
||||||
self.assertEqual(r['status'], 1)
|
|
||||||
|
|
||||||
self.backend.time_travel(self.start_time + (60 * 60 * 24 * 365 * 10))
|
|
||||||
c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle)
|
|
||||||
(tx_hash, o) = c.approve(self.address, self.accounts[0], self.accounts[1], int.from_bytes(b'\xff' * 32, byteorder='big'))
|
|
||||||
self.rpc.do(o)
|
|
||||||
o = receipt(tx_hash)
|
|
||||||
r = self.rpc.do(o)
|
|
||||||
self.assertEqual(r['status'], 1)
|
|
||||||
|
|
||||||
|
|
||||||
def test_transfer_from(self):
|
def test_transfer_from(self):
|
||||||
nonce_oracle = RPCNonceOracle(self.accounts[0], self.rpc)
|
nonce_oracle = RPCNonceOracle(self.accounts[0], self.rpc)
|
||||||
c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle)
|
c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle)
|
||||||
|
@ -6,8 +6,6 @@ import "aux/ABDKMath64x64.sol";
|
|||||||
|
|
||||||
contract DemurrageTokenSingleNocap {
|
contract DemurrageTokenSingleNocap {
|
||||||
|
|
||||||
uint256 constant VALUE_LIMIT = 1 << 63;
|
|
||||||
|
|
||||||
struct redistributionItem {
|
struct redistributionItem {
|
||||||
uint32 period;
|
uint32 period;
|
||||||
uint72 value;
|
uint72 value;
|
||||||
@ -75,7 +73,7 @@ contract DemurrageTokenSingleNocap {
|
|||||||
mapping (address => bool) minter;
|
mapping (address => bool) minter;
|
||||||
|
|
||||||
// Storage for ERC20 approve/transferFrom methods
|
// Storage for ERC20 approve/transferFrom methods
|
||||||
mapping (address => mapping (address => uint256 ) ) public allowance; // holder -> spender -> amount (amount is subject to demurrage)
|
mapping (address => mapping (address => uint256 ) ) allowance; // holder -> spender -> amount (amount is subject to demurrage)
|
||||||
|
|
||||||
// Address to send unallocated redistribution tokens
|
// Address to send unallocated redistribution tokens
|
||||||
address public sinkAddress;
|
address public sinkAddress;
|
||||||
@ -599,14 +597,7 @@ contract DemurrageTokenSingleNocap {
|
|||||||
|
|
||||||
changePeriod();
|
changePeriod();
|
||||||
|
|
||||||
// dex code will attempt uint256max approve, but contract cannot handle that size
|
|
||||||
// truncate to biggest possible value
|
|
||||||
if (_value <= VALUE_LIMIT) {
|
|
||||||
baseValue = toBaseAmount(_value);
|
baseValue = toBaseAmount(_value);
|
||||||
} else {
|
|
||||||
baseValue = VALUE_LIMIT;
|
|
||||||
}
|
|
||||||
|
|
||||||
allowance[msg.sender][_spender] = baseValue;
|
allowance[msg.sender][_spender] = baseValue;
|
||||||
emit Approval(msg.sender, _spender, _value);
|
emit Approval(msg.sender, _spender, _value);
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user