Beispiel #1
0
  txn Accounts 1
  itxn_field RekeyTo
 itxn_submit

end:
 int 1
"""

txinfo, err = goal.app_create(joe, goal.assemble(teal))
assert not err, err
joeb = joeb - 1000
app_id = txinfo['application-index']
assert app_id

app_addr = goal.app_address(app_id)
# flo rekeys her account to the app, app spends from it, then rekeys it back
txinfo, err = goal.pay(flo, joe, amt=1, rekey_to=app_addr)
assert not err, err
assert goal.balance(joe) == joeb + 1, goal.balance(joe)

# can no longer spend
txinfo, err = goal.pay(flo, joe, amt=1)
assert err
assert goal.balance(joe) == joeb + 1, goal.balance(joe)

txinfo, err = goal.app_call(joe, app_id, accounts=[flo])
assert not err, err
joeb = joeb - 1000
assert goal.balance(joe) == joeb + 6, goal.balance(joe)
Beispiel #2
0
app_info = goal.app_info(app_id)
assert app_info['local-state-schema']['num-uint'] == 1, app_info

# App opt-in
optin = goal.appl(joe, app2_id, txn.OnComplete.OptInOC)
txinfo, err = goal.send(optin)
assert not err, err

# convenience wrapper
optin = goal.app_optin(joe, app_id)
txinfo, err = goal.send(optin)
assert not err, err

# App call, with group
deposit = goal.appl(joe, app_id, app_args=["deposit():void"])
payin = goal.pay(goal.account, goal.app_address(app_id), 150_000)
txinfo, err = goal.send_group([deposit, payin])
assert not err, err

app_info = goal.app_info(app_id)
global_state = goal.app_read(app_id)
assert global_state[b'debug'] == b'deposit', global_state
local_state = goal.app_read(app_id, joe)
assert local_state[b'balance'] == 150_000, local_state

# Pay to logicsig, and spend from there, which requires signing by logicsig
fund = goal.pay(goal.account, goal.logic_address(yes), 110_000)
txinfo, err = goal.send(fund)
assert not err, err

spend = goal.pay(goal.logic_address(yes), joe, 2_000)
Beispiel #3
0
assert app1ID

# insert clear state program with inner app call
txinfo2, err = goal.app_create(joe, goal.assemble(app2), goal.assemble(app2))
assert not err, err
app2ID = txinfo2['application-index']
assert app2ID

# dummy destination app
txinfo3, err = goal.app_create(joe, goal.assemble(app3))
assert not err, err
app3ID = txinfo3['application-index']
assert app3ID

# fund app1
_, err = goal.pay(goal.account, goal.app_address(app1ID), amt=4_000_000)
assert not err, err

# fund app2
_, err = goal.pay(goal.account, goal.app_address(app2ID), amt=4_000_000)
assert not err, err

# execute c2c to opt app1 into app2 and verify that the response is structured as
# expected for a successful execution of all 3 apps.
txinfo, err = goal.app_call(joe,
                            app1ID,
                            app_args=[0x00],
                            foreign_apps=[int(app2ID),
                                          int(app3ID)])
assert not err, err
assert len(txinfo["inner-txns"]) == 1
Beispiel #4
0
  byte 0x00
  itxn_field ApplicationArgs
 itxn_submit


end:
 int 1
"""

txinfo, err = goal.app_create(joe, goal.assemble(fund_previous))
assert not err, err
funder = txinfo['application-index']
assert funder

# Fund the funder
txinfo, err = goal.pay(goal.account, goal.app_address(funder), amt=4_000_000)
assert not err, err

# Construct a group that creates an ASA and an app, then "starts" the
# new app by funding and invoking "start(asset)" on it. Inside the new
# app's start() method, there will be yet another inner transaction:
# it opts into the supplied asset.

goal.autosend = False
create_asa = goal.asset_create(joe,
                               total=10_000,
                               unit_name="oz",
                               asset_name="Gold")
app_teal = """
#pragma version 6
 txn ApplicationID
Beispiel #5
0
  txn Accounts 1
  itxn_field Receiver

  int 5
  itxn_field Amount

 itxn_submit

 itxn Fee
 int 2000
 ==
 assert

end:
 int 1
"""

txinfo, err = goal.app_create(joe, goal.assemble(teal))
assert not err, err
app_id = txinfo['application-index']
assert app_id

# Fund the app account
txinfo, err = goal.pay(goal.account, goal.app_address(app_id), amt=400_000)
assert not err, err

txinfo, err = goal.app_call(joe, app_id, accounts=[goal.account])
assert not err, err

print(f"{os.path.basename(sys.argv[0])} OK {stamp}")