Skip to content

Commit

Permalink
withdrawal
Browse files Browse the repository at this point in the history
  • Loading branch information
Piotr Stachyra committed Oct 20, 2021
1 parent 9c8eb65 commit 487c8c0
Show file tree
Hide file tree
Showing 5 changed files with 111 additions and 54 deletions.
11 changes: 11 additions & 0 deletions test/e2e/fixtures/plutus/withdrawal.json
@@ -0,0 +1,11 @@
{
"transaction": "84A600800D80018002000E8005A1581DF0{{scriptHash}}00A10381590853{{script}}F5F6",
"inputs": [],
"redeemers": [
{
"purpose": "rewarding",
"stake_address": "stake_test17qdcxaxsk222fgeenle97p4qwpa3vg20r6dk0nufhgj9ffsytg3a0",
"data": "D87980"
}
]
}
1 change: 1 addition & 0 deletions test/e2e/fixtures/plutus/withdrawal_validator
@@ -0,0 +1 @@
5908500100003233223322323233322232333222323333333322222222323332223233332222323233223233322232333222323233223322323233333222223322332233223322332233222232325335302f33223530470020333333573466e1cd55ce9baa00448000811c8d4114d4c118cd5ce2490350543100047499263333573466e1cd55cea8012400046600e64646464646464646464646666ae68cdc39aab9d500a480008cccccccccc054cd408c8c8c8cccd5cd19b8735573aa004900011980d981b1aba150023028357426ae8940088d4154d4c158cd5ce249035054310005749926135573ca00226ea8004d5d0a80519a8118121aba150093335502a75ca0526ae854020ccd540a9d728149aba1500733502303f35742a00c66a04666aa0a0090eb4d5d0a8029919191999ab9a3370e6aae7540092000233501d3232323333573466e1cd55cea80124000466a04a66a07ceb4d5d0a80118219aba135744a00446a0b26a60b466ae712401035054310005b49926135573ca00226ea8004d5d0a8011919191999ab9a3370e6aae7540092000233502333503e75a6ae854008c10cd5d09aba2500223505935305a3357389201035054310005b49926135573ca00226ea8004d5d09aba250022350553530563357389201035054310005749926135573ca00226ea8004d5d0a80219a811bae35742a00666a04666aa0a0eb88004d5d0a801181a9aba135744a00446a0a26a60a466ae71241035054310005349926135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea8004d5d0a8011919191999ab9a3370ea00290031180d181b9aba135573ca00646666ae68cdc3a801240084603260826ae84d55cf280211999ab9a3370ea00690011180c98161aba135573ca00a46666ae68cdc3a80224000460386eb8d5d09aab9e500623504c35304d3357389201035054310004e49926499264984d55cea80089baa001357426ae8940088d4114d4c118cd5ce2490350543100047499261046135044353045335738920103505435000464984d55cf280089baa0012212330010030022001222222222212333333333300100b00a00900800700600500400300220012212330010030022001122123300100300212001122123300100300212001122123300100300212001212222300400521222230030052122223002005212222300100520011232230023758002640026aa068446666aae7c004940388cd4034c010d5d080118019aba200203323232323333573466e1cd55cea801a4000466600e6464646666ae68cdc39aab9d5002480008cc034c0c4d5d0a80119a8098169aba135744a00446a06c6a606e66ae712401035054310003849926135573ca00226ea8004d5d0a801999aa805bae500a35742a00466a01eeb8d5d09aba25002235032353033335738921035054310003449926135744a00226aae7940044dd50009110919980080200180110009109198008018011000899aa800bae75a224464460046eac004c8004d540b888c8cccd55cf80112804919a80419aa81898031aab9d5002300535573ca00460086ae8800c0b84d5d08008891001091091198008020018900089119191999ab9a3370ea002900011a80418029aba135573ca00646666ae68cdc3a801240044a01046a0526a605466ae712401035054310002b499264984d55cea80089baa001121223002003112200112001232323333573466e1cd55cea8012400046600c600e6ae854008dd69aba135744a00446a0466a604866ae71241035054310002549926135573ca00226ea80048848cc00400c00880048c8cccd5cd19b8735573aa002900011bae357426aae7940088d407cd4c080cd5ce24810350543100021499261375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511a8111a981199ab9c490103505431000244992649926135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880188cccd5cd19b8750024800080188d4068d4c06ccd5ce249035054310001c499264984d55ce9baa0011220021220012001232323232323333573466e1d4005200c200b23333573466e1d4009200a200d23333573466e1d400d200823300b375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c46601a6eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc048c050d5d0a8049bae357426ae8940248cccd5cd19b875006480088c050c054d5d09aab9e500b23333573466e1d401d2000230133016357426aae7940308d407cd4c080cd5ce2481035054310002149926499264992649926135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188d4040d4c044cd5ce2490350543100012499264984d55cea80189aba25001135573ca00226ea80048488c00800c888488ccc00401401000c80048c8c8cccd5cd19b875001480088c018dd71aba135573ca00646666ae68cdc3a80124000460106eb8d5d09aab9e500423500a35300b3357389201035054310000c499264984d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa016600c6ae854008c014d5d09aba25002235007353008335738921035054310000949926135573ca00226ea8004498480048004448848cc00400c008448004448c8c00400488cc00cc0080080041
@@ -0,0 +1 @@
{"cborHex":"5908535908500100003233223322323233322232333222323333333322222222323332223233332222323233223233322232333222323233223322323233333222223322332233223322332233222232325335302f33223530470020333333573466e1cd55ce9baa00448000811c8d4114d4c118cd5ce2490350543100047499263333573466e1cd55cea8012400046600e64646464646464646464646666ae68cdc39aab9d500a480008cccccccccc054cd408c8c8c8cccd5cd19b8735573aa004900011980d981b1aba150023028357426ae8940088d4154d4c158cd5ce249035054310005749926135573ca00226ea8004d5d0a80519a8118121aba150093335502a75ca0526ae854020ccd540a9d728149aba1500733502303f35742a00c66a04666aa0a0090eb4d5d0a8029919191999ab9a3370e6aae7540092000233501d3232323333573466e1cd55cea80124000466a04a66a07ceb4d5d0a80118219aba135744a00446a0b26a60b466ae712401035054310005b49926135573ca00226ea8004d5d0a8011919191999ab9a3370e6aae7540092000233502333503e75a6ae854008c10cd5d09aba2500223505935305a3357389201035054310005b49926135573ca00226ea8004d5d09aba250022350553530563357389201035054310005749926135573ca00226ea8004d5d0a80219a811bae35742a00666a04666aa0a0eb88004d5d0a801181a9aba135744a00446a0a26a60a466ae71241035054310005349926135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea8004d5d0a8011919191999ab9a3370ea00290031180d181b9aba135573ca00646666ae68cdc3a801240084603260826ae84d55cf280211999ab9a3370ea00690011180c98161aba135573ca00a46666ae68cdc3a80224000460386eb8d5d09aab9e500623504c35304d3357389201035054310004e49926499264984d55cea80089baa001357426ae8940088d4114d4c118cd5ce2490350543100047499261046135044353045335738920103505435000464984d55cf280089baa0012212330010030022001222222222212333333333300100b00a00900800700600500400300220012212330010030022001122123300100300212001122123300100300212001122123300100300212001212222300400521222230030052122223002005212222300100520011232230023758002640026aa068446666aae7c004940388cd4034c010d5d080118019aba200203323232323333573466e1cd55cea801a4000466600e6464646666ae68cdc39aab9d5002480008cc034c0c4d5d0a80119a8098169aba135744a00446a06c6a606e66ae712401035054310003849926135573ca00226ea8004d5d0a801999aa805bae500a35742a00466a01eeb8d5d09aba25002235032353033335738921035054310003449926135744a00226aae7940044dd50009110919980080200180110009109198008018011000899aa800bae75a224464460046eac004c8004d540b888c8cccd55cf80112804919a80419aa81898031aab9d5002300535573ca00460086ae8800c0b84d5d08008891001091091198008020018900089119191999ab9a3370ea002900011a80418029aba135573ca00646666ae68cdc3a801240044a01046a0526a605466ae712401035054310002b499264984d55cea80089baa001121223002003112200112001232323333573466e1cd55cea8012400046600c600e6ae854008dd69aba135744a00446a0466a604866ae71241035054310002549926135573ca00226ea80048848cc00400c00880048c8cccd5cd19b8735573aa002900011bae357426aae7940088d407cd4c080cd5ce24810350543100021499261375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511a8111a981199ab9c490103505431000244992649926135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880188cccd5cd19b8750024800080188d4068d4c06ccd5ce249035054310001c499264984d55ce9baa0011220021220012001232323232323333573466e1d4005200c200b23333573466e1d4009200a200d23333573466e1d400d200823300b375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c46601a6eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc048c050d5d0a8049bae357426ae8940248cccd5cd19b875006480088c050c054d5d09aab9e500b23333573466e1d401d2000230133016357426aae7940308d407cd4c080cd5ce2481035054310002149926499264992649926135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188d4040d4c044cd5ce2490350543100012499264984d55cea80189aba25001135573ca00226ea80048488c00800c888488ccc00401401000c80048c8c8cccd5cd19b875001480088c018dd71aba135573ca00646666ae68cdc3a80124000460106eb8d5d09aab9e500423500a35300b3357389201035054310000c499264984d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa016600c6ae854008c014d5d09aba25002235007353008335738921035054310000949926135573ca00226ea8004498480048004448848cc00400c008448004448c8c00400488cc00cc0080080041","type":"PlutusScriptV1","description":""}
3 changes: 1 addition & 2 deletions test/e2e/helpers/utils.rb
Expand Up @@ -5,9 +5,8 @@
module Helpers
module Utils
def cmd(cmd)
puts cmd.gsub(/\s+/, ' ')
cmd.gsub(/\s+/, ' ')
res = `#{cmd}`
puts res
res
end

Expand Down
149 changes: 97 additions & 52 deletions test/e2e/spec/e2e_spec.rb
@@ -1,65 +1,65 @@
RSpec.describe "Cardano Wallet E2E tests", :e2e => true do

before(:all) do
# # shelley tests
# @wid = create_fixture_shelley_wallet
# @target_id = create_shelley_wallet("Target tx wallet")
# @target_id_assets = create_shelley_wallet("Target asset tx wallet")
# @target_id_withdrawal = create_shelley_wallet("Target tx withdrawal wallet")
# @target_id_meta = create_shelley_wallet("Target tx metadata wallet")
# @target_id_ttl = create_shelley_wallet("Target tx ttl wallet")
# @target_id_pools = create_shelley_wallet("Target tx pool join/quit wallet")
#
# # byron tests
# @wid_rnd = create_fixture_byron_wallet "random"
# @wid_ic = create_fixture_byron_wallet "icarus"
# @target_id_rnd = create_shelley_wallet("Target tx wallet")
# @target_id_ic = create_shelley_wallet("Target tx wallet")
# @target_id_rnd_assets = create_shelley_wallet("Target asset tx wallet")
# @target_id_ic_assets = create_shelley_wallet("Target asset tx wallet")
#
# # shared tests
# @wid_sha = create_active_shared_wallet(mnemonic_sentence(24), '0H', 'self')
#
# @nightly_shared_wallets = [ @wid_sha ]
# @nighly_byron_wallets = [ @wid_rnd, @wid_ic ]
# @nightly_shelley_wallets = [
# @wid,
# @target_id,
# @target_id_assets,
# @target_id_withdrawal,
# @target_id_meta,
# @target_id_ttl,
# @target_id_rnd,
# @target_id_ic,
# @target_id_rnd_assets,
# @target_id_ic_assets,
# @target_id_pools
# ]
# wait_for_all_byron_wallets(@nighly_byron_wallets)
# wait_for_all_shelley_wallets(@nightly_shelley_wallets)
# wait_for_all_shared_wallets(@nightly_shared_wallets)
# shelley tests
@wid = create_fixture_shelley_wallet
@target_id = create_shelley_wallet("Target tx wallet")
@target_id_assets = create_shelley_wallet("Target asset tx wallet")
@target_id_withdrawal = create_shelley_wallet("Target tx withdrawal wallet")
@target_id_meta = create_shelley_wallet("Target tx metadata wallet")
@target_id_ttl = create_shelley_wallet("Target tx ttl wallet")
@target_id_pools = create_shelley_wallet("Target tx pool join/quit wallet")

# byron tests
@wid_rnd = create_fixture_byron_wallet "random"
@wid_ic = create_fixture_byron_wallet "icarus"
@target_id_rnd = create_shelley_wallet("Target tx wallet")
@target_id_ic = create_shelley_wallet("Target tx wallet")
@target_id_rnd_assets = create_shelley_wallet("Target asset tx wallet")
@target_id_ic_assets = create_shelley_wallet("Target asset tx wallet")

# shared tests
@wid_sha = create_active_shared_wallet(mnemonic_sentence(24), '0H', 'self')

@nightly_shared_wallets = [ @wid_sha ]
@nighly_byron_wallets = [ @wid_rnd, @wid_ic ]
@nightly_shelley_wallets = [
@wid,
@target_id,
@target_id_assets,
@target_id_withdrawal,
@target_id_meta,
@target_id_ttl,
@target_id_rnd,
@target_id_ic,
@target_id_rnd_assets,
@target_id_ic_assets,
@target_id_pools
]
wait_for_all_byron_wallets(@nighly_byron_wallets)
wait_for_all_shelley_wallets(@nightly_shelley_wallets)
wait_for_all_shared_wallets(@nightly_shared_wallets)

# @wid_rnd = "94c0af1034914f4455b7eb795ebea74392deafe9"
# @wid_ic = "a468e96ab85ad2043e48cf2e5f3437b4356769f4"
@wid = "2269611a3c10b219b0d38d74b004c298b76d16a9"
@target_id = "2269611a3c10b219b0d38d74b004c298b76d16a9"
# @wid = "2269611a3c10b219b0d38d74b004c298b76d16a9"
# @target_id = "2269611a3c10b219b0d38d74b004c298b76d16a9"
# 1f82e83772b7579fc0854bd13db6a9cce21ccd95
# 2269611a3c10b219b0d38d74b004c298b76d16a9
# a042bafdaf98844cfa8f6d4b1dc47519b21a4d95
end

# after(:all) do
# @nighly_byron_wallets.each do |wid|
# BYRON.wallets.delete wid
# end
# @nightly_shelley_wallets.each do |wid|
# SHELLEY.wallets.delete wid
# end
# @nightly_shared_wallets.each do |wid|
# SHARED.wallets.delete wid
# end
# end
after(:all) do
@nighly_byron_wallets.each do |wid|
BYRON.wallets.delete wid
end
@nightly_shelley_wallets.each do |wid|
SHELLEY.wallets.delete wid
end
@nightly_shared_wallets.each do |wid|
SHARED.wallets.delete wid
end
end

describe "E2E Balance -> Sign -> Submit" do

Expand Down Expand Up @@ -111,7 +111,7 @@ def run_contract(contract_setup, scripts)
it "mint-burn" do
vk = SHELLEY.keys.get_public_key(@wid, 'utxo_external', 0, {hash: true})
vkHash = bech32_to_base16(vk)
policy = read_mustached_file("mintBurn_policy", {vkHash: vkHash}).strip
policy = read_mustached_file("mintBurn_policy", {vkHash: vkHash})
policy_id = get_policy_id(policy)

scripts = [ "mintBurn_1.json", "mintBurn_2.json" ]
Expand All @@ -124,6 +124,51 @@ def run_contract(contract_setup, scripts)

end

it "withdrawal" do
##
# This test is withdrawing 0 rewards from stake account that has... 0 rewards.
# Such tx is silly but allowed by the node.
# Producing rewards on testnet is not practical due to long epoch length,
# however there is full e2e test version of this script redeemding 42 A rewards on local cluster.
#
# NOTE:
# The script cert had to be registered on-chain such that withdrawing is permitted.
# It was done once, manually:
#
# 1. Create cert from Plutus script:
#
# $ cat fixtures/plutus/withdrawal_validator_cardano_cli.script
# {"cborHex":"590853590850[...]cc0080080041","type":"PlutusScriptV1","description":""}
# $ cardano-cli stake-address registration-certificate --stake-script-file fixtures/plutus/withdrawal_validator_cardano_cli.script --out-file stake.cert
#
# 2. Register cert on-chain
#
# $ cardano-cli query utxo --address $(cat payment.addr) --testnet-magic 1097911063
# $ cardano-cli transaction build \
# --alonzo-era \
# --testnet-magic 1097911063 \
# --change-address "addr_test1qrfqc909vvxfq7903kaz09cuh5q2un8zw7j9ys4uh3k7j3qpgncz6fapajjvkyqka2sldfpk250nml40sf67am68wd2shl9fth" \
# --tx-in "8e9dd939a6096ce0d033a8a1ad61a83f0b7188f22516c45e1a69ff8cd4ad6f4f#0" \
# --certificate-file stake.cert \
# --protocol-params-file protocol.json \
# --out-file body.tx
#
# $ cardano-cli transaction sign \
# --tx-body-file body.tx \
# --testnet-magic 1097911063 \
# --signing-key-file payment.skey \
# --out-file signed.tx
#
# $ cardano-cli transaction submit --tx-file signed.tx --testnet-magic 1097911063
validator = read_mustached_file("withdrawal_validator")
validator_hash = get_policy_id(validator)
withdrawal_script = "withdrawal.json"
payload = get_templated_plutus_tx(withdrawal_script, {script: validator,
scriptHash: validator_hash})

run_script(withdrawal_script, payload)
end

end

describe "E2E Construct -> Sign -> Submit" do
Expand Down

0 comments on commit 487c8c0

Please sign in to comment.