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

rawissueasset RPC call #474

Merged
Merged
Show file tree
Hide file tree
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
1 change: 1 addition & 0 deletions qa/pull-tester/rpc-tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@
'feature_fedpeg.py',
'default_asset_name.py',
'assetdir.py',
'feature_issuance.py',

# Elements' specially adapted tests second
'blockchain.py',
Expand Down
103 changes: 1 addition & 102 deletions qa/rpc-tests/confidential_transactions.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,7 @@ def setup_network(self, split=False):
self.sync_all()

def run_test(self):
print("Mining blocks...")
self.nodes[0].generate(101)
self.sync_all()
print("General Confidential tests")
#Running balances
node0 = self.nodes[0].getbalance()["bitcoin"]
node1 = 0
Expand Down Expand Up @@ -217,9 +215,6 @@ def run_test(self):

# Unblinded issuance of asset
issued = self.nodes[0].issueasset(1, 1, False)
assert_equal(self.nodes[0].getwalletinfo()["balance"][issued["asset"]], 1)
assert_equal(self.nodes[0].getwalletinfo()["balance"][issued["token"]], 1)
# Quick unblinded reissuance check, making 2*COIN total
self.nodes[0].reissueasset(issued["asset"], 1)

# Compare resulting fields with getrawtransaction
Expand All @@ -228,7 +223,6 @@ def run_test(self):
assert_equal(issued["asset"], raw_details["vin"][issued["vin"]]["issuance"]["asset"])
assert_equal(issued["token"], raw_details["vin"][issued["vin"]]["issuance"]["token"])

testAssetHex = issued["asset"]
self.nodes[0].generate(1)
self.sync_all()

Expand Down Expand Up @@ -275,46 +269,6 @@ def run_test(self):
self.nodes[2].generate(101)
self.sync_all()

# Destroy assets
pre_destroy_btc_balance = self.nodes[2].getwalletinfo()['balance']['bitcoin']
self.nodes[2].destroyamount('bitcoin', 2) # Destroy 2 BTC
self.nodes[2].generate(1)
self.sync_all()

issuedamount = self.nodes[0].getwalletinfo()['balance'][issued["token"]]
assert_equal(issuedamount, Decimal('1.0'))
self.nodes[0].destroyamount(issued["token"], issuedamount) # Destroy all reissuance tokens of one type

self.nodes[0].generate(1)
self.sync_all()
assert(issued["token"] not in self.nodes[0].getinfo()['balance'])

# Test various issuance and auditing paths

issuancedata = self.nodes[0].issueasset(Decimal('0.00000002'), Decimal('0.00000001')) #2 of asset, 1 reissuance token
self.nodes[1].generate(1)
self.sync_all()
assert_equal(self.nodes[0].getwalletinfo()["balance"][issuancedata["asset"]], Decimal('0.00000002'))
assert_equal(self.nodes[0].getwalletinfo()["balance"][issuancedata["token"]], Decimal('0.00000001'))
self.nodes[0].reissueasset(issuancedata["asset"], Decimal('0.00000001'))
self.sync_all()
assert_equal(self.nodes[0].getwalletinfo()["balance"][issuancedata["asset"]], Decimal('0.00000003'))
# Can't reissue an issuance token (yet)
try:
self.nodes[0].reissueasset(issuancedata["token"], Decimal('0.00000001'))
raise AssertionError("You shouldn't be able to reissue a token yet")
except JSONRPCException:
pass


issuancedata = self.nodes[2].issueasset(Decimal('0.00000005'), 0) #5 of asset, 0 reissuance token
# No reissuance tokens
try:
self.nodes[2].reissueasset(issuancedata["token"], 5)
raise AssertionError("You shouldn't be able to reissue without a token")
except JSONRPCException:
pass

issuancedata = self.nodes[2].issueasset(0, Decimal('0.00000006')) #0 of asset, 6 reissuance token

# Node 2 will send node 1 a reissuance token, both will generate assets
Expand All @@ -325,68 +279,13 @@ def run_test(self):
self.nodes[2].generate(1)
self.sync_all()

assert_equal(self.nodes[2].getwalletinfo()["balance"][issuancedata["token"]], Decimal('0.00000005'))
assert_equal(self.nodes[1].getwalletinfo()["balance"][issuancedata["token"]], Decimal('0.00000001'))
redata1 = self.nodes[1].reissueasset(issuancedata["asset"], Decimal('0.05'))
redata2 = self.nodes[2].reissueasset(issuancedata["asset"], Decimal('0.025'))

self.sync_all()
# Watch-only issuances won't show up in wallet until confirmed
self.nodes[1].generate(1)
self.sync_all()

# Now have node 0 audit these issuances
blindingkey1 = self.nodes[1].dumpissuanceblindingkey(redata1["txid"], redata1["vin"])
blindingkey2 = self.nodes[2].dumpissuanceblindingkey(redata2["txid"], redata2["vin"])
blindingkey3 = self.nodes[2].dumpissuanceblindingkey(issuancedata["txid"], issuancedata["vin"])

# Need addr to get transactions in wallet. TODO: importissuances?
txdet1 = self.nodes[1].gettransaction(redata1["txid"])["details"]
txdet2 = self.nodes[2].gettransaction(redata2["txid"])["details"]
txdet3 = self.nodes[2].gettransaction(issuancedata["txid"])["details"]

# Receive addresses added last
addr1 = txdet1[len(txdet1)-1]["address"]
addr2 = txdet2[len(txdet2)-1]["address"]
addr3 = txdet3[len(txdet3)-1]["address"]

assert_equal(len(self.nodes[0].listissuances()), 6);
self.nodes[0].importaddress(addr1)
self.nodes[0].importaddress(addr2)
self.nodes[0].importaddress(addr3)

issuances = self.nodes[0].listissuances()
assert_equal(len(issuances), 9)

for issue in issuances:
if issue['txid'] == redata1["txid"] and issue['vin'] == redata1["vin"]:
assert_equal(issue['assetamount'], Decimal('-1'))
if issue['txid'] == redata2["txid"] and issue['vin'] == redata2["vin"]:
assert_equal(issue['assetamount'], Decimal('-1'))
if issue['txid'] == issuancedata["txid"] and issue['vin'] == issuancedata["vin"]:
assert_equal(issue['assetamount'], Decimal('-1'))
assert_equal(issue['tokenamount'], Decimal('-1'))

self.nodes[0].importissuanceblindingkey(redata1["txid"], redata1["vin"], blindingkey1)
self.nodes[0].importissuanceblindingkey(redata2["txid"], redata2["vin"], blindingkey2)
self.nodes[0].importissuanceblindingkey(issuancedata["txid"], issuancedata["vin"], blindingkey3)

issuances = self.nodes[0].listissuances()

for issue in issuances:
if issue['txid'] == redata1["txid"] and issue['vin'] == redata1["vin"]:
assert_equal(issue['assetamount'], Decimal('0.05'))
if issue['txid'] == redata2["txid"] and issue['vin'] == redata2["vin"]:
assert_equal(issue['assetamount'], Decimal('0.025'))
if issue['txid'] == issuancedata["txid"] and issue['vin'] == issuancedata["vin"]:
assert_equal(issue['assetamount'], Decimal('0'))
assert_equal(issue['tokenamount'], Decimal('0.00000006'))

# Check for value accounting when asset issuance is null but token not, ie unblinded
issued = self.nodes[0].issueasset(0, 1, False)
assert(issued["asset"] not in self.nodes[0].getwalletinfo()["balance"])
assert_equal(self.nodes[0].getwalletinfo()["balance"][issued["token"]], 1)


# Check for value when receiving defferent assets by same address.
self.nodes[0].sendtoaddress(unconfidential_address2, Decimal('0.00000001'), "", "", False, test_asset)
Expand Down
Loading