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

success #4

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,354 @@
#pragma version 10

smart_contracts.nft_marketplace.contract.NftMarketplace.approval_program:
txn ApplicationID
bnz main_entrypoint@2
callsub __init__

main_entrypoint@2:
// smart_contracts/nft_marketplace/contract.py:20
// class NftMarketplace(arc4.ARC4Contract):
txn NumAppArgs
bz main_bare_routing@9
method "bootstrap(asset,uint64,pay)void"
method "buy(pay,uint64)void"
method "withdraw_and_delete()void"
txna ApplicationArgs 0
match main_bootstrap_route@4 main_buy_route@5 main_withdraw_and_delete_route@6
err // reject transaction

main_bootstrap_route@4:
// smart_contracts/nft_marketplace/contract.py:96
// @arc4.abimethod
txn OnCompletion
!
assert // OnCompletion is NoOp
txn ApplicationID
assert // is not creating
// smart_contracts/nft_marketplace/contract.py:20
// class NftMarketplace(arc4.ARC4Contract):
txna ApplicationArgs 1
btoi
txnas Assets
txna ApplicationArgs 2
btoi
txn GroupIndex
int 1
-
dup
gtxns TypeEnum
int pay
==
assert // transaction type is pay
// smart_contracts/nft_marketplace/contract.py:96
// @arc4.abimethod
callsub bootstrap
int 1
return

main_buy_route@5:
// smart_contracts/nft_marketplace/contract.py:147
// @arc4.abimethod
txn OnCompletion
!
assert // OnCompletion is NoOp
txn ApplicationID
assert // is not creating
// smart_contracts/nft_marketplace/contract.py:20
// class NftMarketplace(arc4.ARC4Contract):
txn GroupIndex
int 1
-
dup
gtxns TypeEnum
int pay
==
assert // transaction type is pay
txna ApplicationArgs 1
btoi
// smart_contracts/nft_marketplace/contract.py:147
// @arc4.abimethod
callsub buy
int 1
return

main_withdraw_and_delete_route@6:
// smart_contracts/nft_marketplace/contract.py:211
// @arc4.abimethod(allow_actions=["DeleteApplication"])
txn OnCompletion
int DeleteApplication
==
assert // OnCompletion is DeleteApplication
txn ApplicationID
assert // is not creating
callsub withdraw_and_delete
int 1
return

main_bare_routing@9:
// smart_contracts/nft_marketplace/contract.py:20
// class NftMarketplace(arc4.ARC4Contract):
txn OnCompletion
!
assert // reject transaction
txn ApplicationID
!
assert // is creating
int 1
return


// smart_contracts.nft_marketplace.contract.NftMarketplace.bootstrap(asset: uint64, unitary_price: uint64, mbr_pay: uint64) -> void:
bootstrap:
// smart_contracts/nft_marketplace/contract.py:96-99
// @arc4.abimethod
// def bootstrap(
// self, asset: Asset, unitary_price: UInt64, mbr_pay: gtxn.PaymentTransaction
// ) -> None:
proto 3 0
// smart_contracts/nft_marketplace/contract.py:100
// assert Txn.sender == Global.creator_address
txn Sender
global CreatorAddress
==
assert
// smart_contracts/nft_marketplace/contract.py:101
// assert self.bootstrapped == False
int 0
byte "bootstrapped"
app_global_get_ex
assert // check bootstrapped exists
!
assert
// smart_contracts/nft_marketplace/contract.py:102
// assert mbr_pay.receiver == Global.current_application_address
frame_dig -1
gtxns Receiver
global CurrentApplicationAddress
==
assert
// smart_contracts/nft_marketplace/contract.py:103
// assert mbr_pay.amount == Global.asset_create_min_balance + Global.asset_opt_in_min_balance
frame_dig -1
gtxns Amount
global AssetCreateMinBalance
global AssetOptInMinBalance
+
==
assert
// smart_contracts/nft_marketplace/contract.py:105
// self.asset_id = asset.id
byte "asset_id"
frame_dig -3
app_global_put
// smart_contracts/nft_marketplace/contract.py:106
// self.unitary_price = unitary_price
byte "unitary_price"
frame_dig -2
app_global_put
// smart_contracts/nft_marketplace/contract.py:107
// self.bootstrapped = True
byte "bootstrapped"
int 1
app_global_put
// smart_contracts/nft_marketplace/contract.py:109-113
// itxn.AssetTransfer(
// xfer_asset = asset.id,
// asset_receiver = Global.current_application_address,
// asset_amount= 0,
// ).submit()
itxn_begin
// smart_contracts/nft_marketplace/contract.py:111
// asset_receiver = Global.current_application_address,
global CurrentApplicationAddress
// smart_contracts/nft_marketplace/contract.py:112
// asset_amount= 0,
int 0
itxn_field AssetAmount
itxn_field AssetReceiver
frame_dig -3
itxn_field XferAsset
// smart_contracts/nft_marketplace/contract.py:109
// itxn.AssetTransfer(
int axfer
itxn_field TypeEnum
// smart_contracts/nft_marketplace/contract.py:109-113
// itxn.AssetTransfer(
// xfer_asset = asset.id,
// asset_receiver = Global.current_application_address,
// asset_amount= 0,
// ).submit()
itxn_submit
retsub


// smart_contracts.nft_marketplace.contract.NftMarketplace.buy(buyer_txn: uint64, quantity: uint64) -> void:
buy:
// smart_contracts/nft_marketplace/contract.py:147-152
// @arc4.abimethod
// def buy(
// self,
// buyer_txn: gtxn.PaymentTransaction,
// quantity: UInt64,
// ) -> None:
proto 2 0
// smart_contracts/nft_marketplace/contract.py:154
// assert self.bootstrapped == True
int 0
byte "bootstrapped"
app_global_get_ex
assert // check bootstrapped exists
int 1
==
assert
// smart_contracts/nft_marketplace/contract.py:155
// assert buyer_txn.sender == Txn.sender
frame_dig -2
gtxns Sender
dup
txn Sender
==
assert
// smart_contracts/nft_marketplace/contract.py:156
// assert buyer_txn.receiver == Global.current_application_address
frame_dig -2
gtxns Receiver
global CurrentApplicationAddress
==
assert
// smart_contracts/nft_marketplace/contract.py:157
// assert buyer_txn.amount == self.unitary_price * quantity
frame_dig -2
gtxns Amount
int 0
byte "unitary_price"
app_global_get_ex
assert // check unitary_price exists
frame_dig -1
*
==
assert
// smart_contracts/nft_marketplace/contract.py:159-163
// itxn.AssetTransfer(
// xfer_asset = self.asset_id,
// asset_receiver = buyer_txn.sender,
// asset_amount= quantity,
// ).submit()
itxn_begin
// smart_contracts/nft_marketplace/contract.py:160
// xfer_asset = self.asset_id,
int 0
byte "asset_id"
app_global_get_ex
assert // check asset_id exists
frame_dig -1
itxn_field AssetAmount
itxn_field XferAsset
itxn_field AssetReceiver
// smart_contracts/nft_marketplace/contract.py:159
// itxn.AssetTransfer(
int axfer
itxn_field TypeEnum
// smart_contracts/nft_marketplace/contract.py:159-163
// itxn.AssetTransfer(
// xfer_asset = self.asset_id,
// asset_receiver = buyer_txn.sender,
// asset_amount= quantity,
// ).submit()
itxn_submit
retsub


// smart_contracts.nft_marketplace.contract.NftMarketplace.withdraw_and_delete() -> void:
withdraw_and_delete:
// smart_contracts/nft_marketplace/contract.py:211-212
// @arc4.abimethod(allow_actions=["DeleteApplication"])
// def withdraw_and_delete(self) -> None:
proto 0 0
// smart_contracts/nft_marketplace/contract.py:214
// assert Txn.sender == Global.creator_address
txn Sender
global CreatorAddress
==
assert
// smart_contracts/nft_marketplace/contract.py:216-220
// itxn.AssetTransfer(
// xfer_asset = self.asset_id,
// asset_receiver = Global.creator_address,
// asset_close_to= Global.creator_address,
// ).submit()
itxn_begin
// smart_contracts/nft_marketplace/contract.py:217
// xfer_asset = self.asset_id,
int 0
byte "asset_id"
app_global_get_ex
assert // check asset_id exists
// smart_contracts/nft_marketplace/contract.py:218
// asset_receiver = Global.creator_address,
global CreatorAddress
// smart_contracts/nft_marketplace/contract.py:219
// asset_close_to= Global.creator_address,
dup
itxn_field AssetCloseTo
itxn_field AssetReceiver
itxn_field XferAsset
// smart_contracts/nft_marketplace/contract.py:216
// itxn.AssetTransfer(
int axfer
itxn_field TypeEnum
// smart_contracts/nft_marketplace/contract.py:216-220
// itxn.AssetTransfer(
// xfer_asset = self.asset_id,
// asset_receiver = Global.creator_address,
// asset_close_to= Global.creator_address,
// ).submit()
itxn_submit
// smart_contracts/nft_marketplace/contract.py:222-225
// itxn.Payment(
// receiver = Global.creator_address,
// close_remainder_to = Global.creator_address
// ).submit()
itxn_begin
// smart_contracts/nft_marketplace/contract.py:223
// receiver = Global.creator_address,
global CreatorAddress
// smart_contracts/nft_marketplace/contract.py:224
// close_remainder_to = Global.creator_address
dup
itxn_field CloseRemainderTo
itxn_field Receiver
// smart_contracts/nft_marketplace/contract.py:222
// itxn.Payment(
int pay
itxn_field TypeEnum
// smart_contracts/nft_marketplace/contract.py:222-225
// itxn.Payment(
// receiver = Global.creator_address,
// close_remainder_to = Global.creator_address
// ).submit()
itxn_submit
retsub


// smart_contracts.nft_marketplace.contract.NftMarketplace.__init__() -> void:
__init__:
// smart_contracts/nft_marketplace/contract.py:48
// def __init__(self) -> None:
proto 0 0
// smart_contracts/nft_marketplace/contract.py:50
// self.asset_id = UInt64(0)
byte "asset_id"
int 0
app_global_put
// smart_contracts/nft_marketplace/contract.py:51
// self.unitary_price = UInt64(0)
byte "unitary_price"
int 0
app_global_put
// smart_contracts/nft_marketplace/contract.py:52
// self.bootstrapped = bool(False)
byte "bootstrapped"
int 0
app_global_put
retsub
Loading