@@ -28,179 +28,206 @@ testdir = os.path.dirname(__file__)
class TestBasic ( TestDemurrageDefault ) :
# def test_hello(self) :
# nonce_oracle = RPCNonceOracle(self.accounts[0], self. rpc)
# c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle= nonce_oracle)
# o = c.actual_period(self. address, sender_address=self.accounts[0] )
# r = self.rpc.do(o )
#
# self. backend. time_travel(self.start_time + self. period_seconds + 1 )
# o = c.actual_period(self. address, sender_address=self.accounts[0] )
# r = self.rpc.do(o )
#
#
# def test_balance(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.mint_to(self.address, self.accounts[0], self.accounts[1], 1024)
# r = self.rpc.do(o )
# o = receipt( tx_hash)
# r = self.rpc.do(o )
# self. assertEqual(r['status'], 1 )
#
# o = c.balance_of(self.address, self.accounts[1], sender_address=self.accounts[0] )
# r = self.rpc.do(o )
# balance = c. parse_balance_of(r )
# self. assertEqual( balance, 1024)
#
#
# def test_apply_demurrage(self) :
# modifier = (10 ** 38 )
#
# nonce_oracle = RPCNonceOracle(self.accounts[0], self. rpc)
# c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle= nonce_oracle)
#
# o = c. demurrage_amount(self. address, sender_address=self.accounts[0] )
# r = self.rpc.do(o )
# demurrage_amount = c. parse_demurrage_amount(r )
# self. assertEqual( modifier, demurrage_amount)
#
# o = block_latest( )
# r = self.rpc.do(o )
# o = block_by_number(r )
# b = self.rpc.do(o )
# logg.debug('block {} start {}'.format(b['timestamp'], self.start_time) )
#
# self.backend.time_travel(self.start_time + 2)
# (tx_hash, o) = c.apply_demurrage(self. address, sender_address=self.accounts[0] )
# r = self.rpc.do(o )
# o = receipt(tx_hash )
# r = self.rpc.do(o)
# self.assertEqual(r['status'], 1 )
#
# o = c.demurrage_amount(self.address, sender_address=self.accounts[0])
# r = self.rpc.do(o)
# demurrage_amount = c.parse_demurrage_amount(r)
# self.assertEqual(modifier, demurrage_amount)
#
# self.backend.time_travel(self.start_time + 61)
# (tx_hash, o) = c.apply_demurrage(self.address, sender_address=self.accounts[0] )
# r = self.rpc.do(o )
# o = receipt(tx_hash)
# r = self.rpc.do(o )
# self.assertEqual(r['status'], 1 )
# o = c. demurrage_amount(self.address, sen der_address=self.accounts[0] )
# r = self.rpc.do(o )
# demurrage_amount = c.parse_demurrage_amount(r)
# modifier_base = 1000000 - self.tax_level
# logg.debug('modifier base {}'.format(modifier_base) )
# modifier = int(modifier_base * (10 ** 32)) # 38 decimal places minus 6 (1000000 )
# self.assertEqual(modifier, demurrage_amount )
#
# self.backend.time_travel(self.start_time + 601)
# (tx_hash, o) = c.apply_demurrage(self.address, sender_address=self.accounts[0] )
# r = self.rpc.do(o )
# o = receipt(tx_hash )
# r = self.rpc.do(o )
# self.assertEqual(r['status'], 1 )
# o = c.demurrage_amount(self.address, sender_address=self.accounts[0] )
# r = self.rpc.do(o)
# demurrage_amount = c.par se_ demurrage_amount(r )
# modifier_base = ((1000000 - self.tax_level) / 1000000) ** 10
# modifier = int(modifier_base * (10 ** 12) )
#
# rounding_tolerance_nano = 4000000 # 0.000004% precision
# demurrage_amount_truncate = int(demurrage_amount / (10 ** 26)) # equals 12 decimal places
# self.assertGreaterEqual(modifier, demurrage_amount_truncate - rounding_tolerance_nano )
# self.assertLessEqual(modifier, demurrage_amount_truncate )
#
#
# def test_mint(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.mint_to(self.address, self.accounts[0], self.accounts[1], 1024 )
# r = self.rpc.do(o)
# o = receipt(tx_hash )
# r = self.rpc.do(o )
# self.assertEqual(r['status'], 1)
#
# o = c.balance_of(self.address, self.accounts[1], sender_address=self.accounts[0] )
# r = self.rpc.do(o )
# balance = c.parse_balance_of(r )
# self.assertEqual(balance, 1024 )
#
# (tx_hash, o) = c.mint_to(self.address, self.accounts[0], self.accounts[1], 976 )
# r = self.rpc.do(o )
# o = receipt(tx_hash )
# r = self.rpc.do(o)
# self.assertEqual(r['status'], 1 )
#
# o = c.balance_of(self.address, self.accounts[1], sender_address=self.accounts[0])
# r = self.rpc.do(o)
# balance = c.parse_balance_of(r)
# self. assertEqual(balance, 2000 )
#
#
# self.backend.time_travel(self.start_time + 61)
# (tx_hash, o) = c.apply_demurrage(self.address, sender_address=self.accounts[0])
# r = self.rpc.do(o )
# o = c.balance_of(self.address, self.accounts[1], sender_address=self.accounts[0] )
# r = self.rpc.do(o )
# balance = c.parse_balance_of(r )
# self.assertEqual(balance, int(2000 * 0.98) )
#
#
# def test_minter_control(self):
# nonce_oracle = RPCNonceOracle(self.accounts[1], self.rpc )
# c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle )
#
# (tx_hash, o) = c.mint_to(self.address, self.accounts[1], self.accounts[2], 1024)
# self.rpc.do(o)
# o = receipt(tx_hash )
# r = self.rpc.do(o )
# self.assertEqual(r['status'], 0 )
#
# (tx_hash, o) = c.add_minter(self.address, self.accounts[1], self.accounts[1] )
# self.rpc.do(o)
# o = receipt(tx_hash )
# r = self.rpc.do(o )
# self.assertEqual(r['status'], 0 )
#
# nonce_oracle = RPCNonceOracle(self.accounts[0], self.rpc)
# c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle)
# (tx_hash, o) = c.add_minter(self.address, self.accounts[0], self.accounts[1] )
# self.rpc.do(o )
# o = receipt(tx_hash )
# r = self.rpc.do(o )
# self.assertEqual(r['status'], 1 )
#
# nonce_oracle = RPCNonceOracle(self.accounts[1], self.rpc )
# c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle)
# (tx_hash, o) = c.mint_to(self.address, self.accounts[1], self.accounts[2], 1024)
# self.rpc.do(o)
# o = receipt(tx_hash )
# r = self.rpc.do(o )
# self.assertEqual(r['status'], 1)
#
# (tx_hash, o) = c.add_minter(self.address, self.accounts[1], self.accounts[2] )
# self.rpc.do(o )
# o = receipt(tx_hash )
# r = self.rpc.do(o )
# self.assertEqual(r['status'], 0)
#
# (tx_hash, o) = c.remove_minter(self.address, self.accounts[1], self.accounts[1] )
# self.rpc.do(o )
# o = receipt(tx_hash )
# r = self.rpc.do(o )
# self.assertEqual(r['status'], 1)
#
# (tx_hash, o) = c.mint_to(self.address, self.accounts[1], self.accounts[2], 1024 )
# self.rpc.do(o )
# o = receipt(tx_hash )
# r = self.rpc.do(o )
# self.assertEqual(r['status'], 0 )
#
#
def test_hello( self ) :
nonce_oracle = RPCNonceOracle( self . accounts [ 0 ] , self . rpc )
c = DemurrageToken( self . chain_spec , signer = self . signer , nonce_oracle= nonce_oracle )
o = c . actual_period ( self . address, sender_address= self . accounts [ 0 ] )
r = self . rpc . do ( o )
self. backend. time_travel( self . start_time + self . period_seconds + 1 )
o = c . actual_period ( self . address, sender_address= self . accounts [ 0 ] )
r = self . rpc . do ( o )
def test_balance( 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 . mint_to ( self . address , self . accounts [ 0 ] , self . accounts [ 1 ] , 1024 )
r = self . rpc . do ( o )
o = receipt( tx_hash )
r = self . rpc . do ( o )
self. assertEqual( r [ ' status ' ] , 1 )
o = c . balance_of ( self . address , self . accounts [ 1 ] , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
balance = c . parse_balance_of( r )
self. assertEqual( balance, 1024 )
def test_apply_demurrage_limited ( self ) :
modifier = ( 10 * * 28 )
nonce_oracle = RPCNonceOracle( self . accounts [ 0 ] , self . rpc )
c = DemurrageToken( self . chain_spec , signer = self . signer , nonce_oracle= nonce_oracle )
o = c . demurrage_amount( self . address, sender_address= self . accounts [ 0 ] )
r = self . rpc . do ( o )
demurrage_amount = c . parse_demurrage_amount( r )
self. assertEqual( modifier, demurrage_amount )
self . backend . time_travel ( self . start_time + 120 )
( tx_hash , o ) = c . apply_demurrage ( self . address , sender_address = self . accounts [ 0 ] , limit = 1 )
r = self . rpc . do ( o )
o = receipt ( tx_hash )
r = self . rpc . do ( o )
self . assertEqual ( r [ ' status ' ] , 1 )
o = c . demurrage_amount ( self . address, sender_address= self . accounts [ 0 ] )
r = self . rpc . do ( o )
demurrage_amount = c . parse_demurrage_amount ( r )
modifier_base = 1000000 - self . tax_level
modifier = int ( modifier_base * ( 10 * * 22 ) ) # 38 decimal places minus 6 (1000000 )
self . assertEqual ( modifier , demurrage_amount )
def test_apply_demurrage ( self ) :
modifier = ( 10 * * 28 )
nonce_oracle = RPCNonceOracle ( self . accounts [ 0 ] , self . rpc )
c = DemurrageToken ( self . chain_spec , signer = self . signer , nonce_oracle = nonce_oracle )
o = c . demurrage_amount ( self . address , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
demurrage_amount = c . par se_ demurrage_amount ( r )
self . assertEqual ( modifier , demurrage_amount )
o = block_latest ( )
r = self . rpc . do ( o )
o = block_by_number ( r )
b = self . rpc . do ( o )
logg . debug ( ' block {} start {} ' . format ( b [ ' timestamp ' ] , self . start_time ) )
self . backend . time_travel ( self . start_time + 2 )
( tx_hash , o ) = c . apply_demurrage ( self . address , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
o = receipt ( tx_hash )
r = self . rpc . do ( o )
self . assertEqual ( r [ ' status ' ] , 1 )
o = c . demurrage_amount( self . address , sen der_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
demurrage_amount = c . parse_demurrage_amount ( r )
self . assertEqual ( modifier , demurrage_amount )
self . backend . time_travel ( self . start_time + 61 )
( tx_hash , o ) = c . apply_demurrage ( self . address , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
o = receipt ( tx_hash )
r = self . rpc . do ( o )
self . assertEqual ( r [ ' status ' ] , 1 )
o = c . demurrage_amount ( self . address , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
demurrage_amount = c . parse_demurrage_amount ( r )
modifier_base = 1000000 - self . tax_level
modifier = int ( modifier_base * ( 10 * * 22 ) ) # 38 decimal places minus 6 (1000000 )
self . assertEqual ( modifier , demurrage_amount )
self . backend . time_travel ( self . start_time + 601 )
( tx_hash , o ) = c . apply_demurrage ( self . address , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
o = receipt ( tx_hash )
r = self . rpc . do ( o )
self . assertEqual ( r [ ' status ' ] , 1 )
o = c . demurrage_amount ( self . address , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
demurrage_amount = c . parse_demurrage_amount ( r )
modifier_base = ( ( 1000000 - self . tax_level ) / 1000000 ) * * 10
logg . warning ( ' mod base {} ' . format ( modifier_base ) )
modifier = int ( modifier_base * ( 10 * * 12 ) )
rounding_tolerance_nano = 4000000 # 0.000004% precision
demurrage_amount_truncate = int ( demurrage_amount / ( 10 * * 16 ) ) # equals 38 decimal places - 14 for the modifier magniture - 2 for percent int calc + 6 for token decimals <- TODO verify this calc
self. assertGreaterEqual ( modifier , demurrage_amount_truncate - rounding_tolerance_nano )
self . assertLessEqual ( modifier , demurrage_amount_truncate )
def test_mint ( 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 . mint_to ( self . address , self . accounts [ 0 ] , self . accounts [ 1 ] , 1024 )
r = self . rpc . do ( o )
o = receipt ( tx_hash )
r = self . rpc . do ( o )
self . assertEqual ( r [ ' status ' ] , 1 )
o = c . balance_of ( self . address , self . accounts [ 1 ] , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
balance = c . parse_balance_of ( r )
self . assertEqual ( balance , 1024 )
( tx_hash , o ) = c . mint_to ( self . address , self . accounts [ 0 ] , self . accounts [ 1 ] , 976 )
r = self . rpc . do ( o )
o = receipt ( tx_hash )
r = self . rpc . do ( o )
self . assertEqual ( r [ ' status ' ] , 1 )
o = c . balance_of ( self . address , self . accounts [ 1 ] , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
balance = c . parse_balance_of ( r )
self . assertEqual ( balance , 2000 )
self . backend . time_travel ( self . start_time + 61 )
( tx_hash , o ) = c . apply_demurrage ( self . address , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
o = c . balance_of ( self . address , self . accounts [ 1 ] , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
balance = c . parse_balance_of ( r )
self . assertEqual ( balance , int ( 2000 * 0.98 ) )
def test_minter_control ( self ) :
nonce_oracle = RPCNonceOracle ( self . accounts [ 1 ] , self . rpc )
c = DemurrageToken ( self . chain_spec , signer = self . signer , nonce_oracle = nonce_oracle )
( tx_hash , o ) = c . mint_to ( self . address , self . accounts [ 1 ] , self . accounts [ 2 ] , 1024 )
self . rpc . do ( o )
o = receipt ( tx_hash )
r = self . rpc . do ( o )
self . assertEqual ( r [ ' status ' ] , 0 )
( tx_hash , o ) = c . add_minter ( self . address , self . accounts [ 1 ] , self . accounts [ 1 ] )
self . rpc . do ( o )
o = receipt ( tx_hash )
r = self . rpc . do ( o )
self . assertEqual ( r [ ' status ' ] , 0 )
nonce_oracle = RPCNonceOracle ( self . accounts [ 0 ] , self . rpc )
c = DemurrageToken ( self . chain_spec , signer = self . signer , nonce_oracle = nonce_oracle )
( tx_hash , o ) = c . add_minter ( self . address , self . accounts [ 0 ] , self . accounts [ 1 ] )
self . rpc . do ( o )
o = receipt ( tx_hash )
r = self . rpc . do ( o )
self . assertEqual ( r [ ' status ' ] , 1 )
nonce_oracle = RPCNonceOracle ( self . accounts [ 1 ] , self . rpc )
c = DemurrageToken ( self . chain_spec , signer = self . signer , nonce_oracle = nonce_oracle )
( tx_hash , o ) = c . mint_to ( self . address , self . accounts [ 1 ] , self . accounts [ 2 ] , 1024 )
self . rpc . do ( o )
o = receipt ( tx_hash )
r = self . rpc . do ( o )
self . assertEqual ( r [ ' status ' ] , 1 )
( tx_hash , o ) = c . add_minter ( self . address , self . accounts [ 1 ] , self . accounts [ 2 ] )
self . rpc . do ( o )
o = receipt ( tx_hash )
r = self . rpc . do ( o )
self . assertEqual ( r [ ' status ' ] , 0 )
( tx_hash , o ) = c . remove_minter ( self . address , self . accounts [ 1 ] , self . accounts [ 1 ] )
self . rpc . do ( o )
o = receipt ( tx_hash )
r = self . rpc . do ( o )
self . assertEqual ( r [ ' status ' ] , 1 )
( tx_hash , o ) = c . mint_to ( self . address , self . accounts [ 1 ] , self . accounts [ 2 ] , 1024 )
self . rpc . do ( o )
o = receipt ( tx_hash )
r = self . rpc . do ( o )
self . assertEqual ( r [ ' status ' ] , 0 )
def test_base_amount ( self ) :
nonce_oracle = RPCNonceOracle ( self . accounts [ 0 ] , self . rpc )
c = DemurrageToken ( self . chain_spec , signer = self . signer , nonce_oracle = nonce_oracle )
@@ -216,78 +243,78 @@ class TestBasic(TestDemurrageDefault):
amount = c . parse_to_base_amount ( r )
self . assertEqual ( amount , 1020 )
#
# def test_transfer(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.mint_to(self.address, self.accounts[0], self.accounts[1], 1024)
# self.rpc.do(o )
#
# nonce_oracle = RPCNonceOracle(self.accounts[1], self. rpc)
# c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle= nonce_oracle)
# ( tx_hash, o) = c.transfer(self.address, self.accounts[1], self.accounts[2], 500)
# self.rpc.do(o )
# o = receipt( tx_hash)
# r = self.rpc.do(o )
# self. assertEqual(r['status'], 1 )
#
# o = c.balance_of(self.address, self.accounts[1], sender_address=self.accounts[0] )
# r = self.rpc.do(o )
# balance = c. parse_balance_of(r )
# self. assertEqual( balance, 524)
#
# o = c.balance_of(self.address, self.accounts[2], sender_address=self.accounts[0] )
# r = self.rpc.do(o )
# balance = c. parse_balance_of(r )
# self. assertEqual( balance, 500)
#
# nonce_oracle = RPCNonceOracle(self.accounts[2], self. rpc)
# c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle= nonce_oracle)
# ( tx_hash, o) = c.transfer(self.address, self.accounts[2], self.accounts[1], 500)
# self.rpc.do(o )
# o = receipt( tx_hash)
# r = self.rpc.do(o )
# self. assertEqual(r['status'], 1 )
#
#
#
# def test_transfer_from(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.mint_to(self.address, self.accounts[0], self.accounts[1], 1024)
# self.rpc.do(o )
#
# nonce_oracle = RPCNonceOracle(self.accounts[1], self. rpc)
# c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle= nonce_oracle)
# ( tx_hash, o) = c.approve(self.address, self.accounts[1], self.accounts[2], 500)
# self.rpc.do(o )
# o = receipt( tx_hash)
# r = self.rpc.do(o )
# self. assertEqual(r['status'], 1 )
#
# o = c.balance_of(self.address, self.accounts[1], sender_address=self.accounts[0] )
# r = self.rpc.do(o )
# balance = c. parse_balance_of(r )
# self. assertEqual( balance, 1024)
#
# nonce_oracle = RPCNonceOracle(self.accounts[2], self. rpc)
# c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle= nonce_oracle)
# ( tx_hash, o) = c.transfer_from(self.address, self.accounts[2], self.accounts[1], self.accounts[3], 500)
# self.rpc.do(o )
# o = receipt( tx_hash)
# r = self.rpc.do(o )
# self. assertEqual(r['status'], 1 )
#
# o = c.balance_of(self.address, self.accounts[1], sender_address=self.accounts[0] )
# r = self.rpc.do(o )
# balance = c. parse_balance_of(r )
# self. assertEqual( balance, 524)
#
# o = c.balance_of(self.address, self.accounts[3], sender_address=self.accounts[0] )
# r = self.rpc.do(o )
# balance = c. parse_balance_of(r )
# self. assertEqual( balance, 500)
def test_transfer( 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 . mint_to ( self . address , self . accounts [ 0 ] , self . accounts [ 1 ] , 1024 )
self. rpc . do ( o )
nonce_oracle = RPCNonceOracle( self . accounts [ 1 ] , self . rpc )
c = DemurrageToken( self . chain_spec , signer = self . signer , nonce_oracle= nonce_oracle )
( tx_hash, o ) = c . transfer ( self . address , self . accounts [ 1 ] , self . accounts [ 2 ] , 500 )
self. rpc . do ( o )
o = receipt( tx_hash )
r = self . rpc . do ( o )
self. assertEqual( r [ ' status ' ] , 1 )
o = c . balance_of ( self . address , self . accounts [ 1 ] , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
balance = c . parse_balance_of( r )
self. assertEqual( balance, 524 )
o = c . balance_of ( self . address , self . accounts [ 2 ] , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
balance = c . parse_balance_of( r )
self. assertEqual( balance, 500 )
nonce_oracle = RPCNonceOracle( self . accounts [ 2 ] , self . rpc )
c = DemurrageToken( self . chain_spec , signer = self . signer , nonce_oracle= nonce_oracle )
( tx_hash, o ) = c . transfer ( self . address , self . accounts [ 2 ] , self . accounts [ 1 ] , 500 )
self. rpc . do ( o )
o = receipt( tx_hash )
r = self . rpc . do ( o )
self. assertEqual( r [ ' status ' ] , 1 )
def test_transfer_from( 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 . mint_to ( self . address , self . accounts [ 0 ] , self . accounts [ 1 ] , 1024 )
self. rpc . do ( o )
nonce_oracle = RPCNonceOracle( self . accounts [ 1 ] , self . rpc )
c = DemurrageToken( self . chain_spec , signer = self . signer , nonce_oracle= nonce_oracle )
( tx_hash, o ) = c . approve ( self . address , self . accounts [ 1 ] , self . accounts [ 2 ] , 500 )
self. rpc . do ( o )
o = receipt( tx_hash )
r = self . rpc . do ( o )
self. assertEqual( r [ ' status ' ] , 1 )
o = c . balance_of ( self . address , self . accounts [ 1 ] , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
balance = c . parse_balance_of( r )
self. assertEqual( balance, 1024 )
nonce_oracle = RPCNonceOracle( self . accounts [ 2 ] , self . rpc )
c = DemurrageToken( self . chain_spec , signer = self . signer , nonce_oracle= nonce_oracle )
( tx_hash, o ) = c . transfer_from ( self . address , self . accounts [ 2 ] , self . accounts [ 1 ] , self . accounts [ 3 ] , 500 )
self. rpc . do ( o )
o = receipt( tx_hash )
r = self . rpc . do ( o )
self. assertEqual( r [ ' status ' ] , 1 )
o = c . balance_of ( self . address , self . accounts [ 1 ] , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
balance = c . parse_balance_of( r )
self. assertEqual( balance, 524 )
o = c . balance_of ( self . address , self . accounts [ 3 ] , sender_address = self . accounts [ 0 ] )
r = self . rpc . do ( o )
balance = c . parse_balance_of( r )
self. assertEqual( balance, 500 )
if __name__ == ' __main__ ' :