Community Smart Contract Reviews

Akita Token Swap

User Reviews


Overview

TitleAkita Token Swap
DescriptionThe Akita Inu ASA changed from an old ASA to a new ASA and offered this contract to holders as a way to swap with a 1-to-1 exchange rate.
NetworkMainnet
Application ID537279393
Teal Version5
AVM Version1.0
OnComplete FeaturesNoOp
State Schemas0 Global Bytes, 3 Global Ints, 0 Local Bytes, 0 Local Ints.
Supported ARCsNone
GitHubhttps://github.com/OfficialAkitaInu/SmartContracts/blob/development/contracts/AkitaTokenSwapper/
Written InPyTeal
Timeline of notable events
  • 2022-01-10 23:30:21 - Initial deployment.
  • 2022-01-10 23:30:30 - Application opts in to old and new ASAs. Configure global states.
  • 2022-01-11 15:28:36 - First swap takes place.
Last updated2022-10-22 11:02:39

Base64 Bytecode

Approval Program:

BSAFAAQBAgMmAwxOZXdfQXNzZXRfSUQNU3dhcF9Bc3NldF9JRAhNdWx0aXBseTEBgdAPDTEgMgMTETEZJRIRMRkjEhExGSEEEhExGYEFEhExGSQSETEJMgMTETEVMgMTEUABCzEYIhJAAQIxGyUSQACUMRkiEkAAAQAyBCEEEjMAECMSEDMAEShkEhAzABIiEhAzAAAzABQSEDMAIDIDEhAzAAkyAxIQMwAVMgMSEDMBECMSEDMBEiINEDMBESlkEhAzAQAzAAASEDMBFDIKEhAzASAyAxIQMwEJMgMSEDMBFTIDEhAzAhkiEhAzAhsiEhAzAgAzAQASEEQzARIqZAuIAH0kQylkIhIoZCISEDIEJRIQMwAQJBIQMwAHMgoSEDMAADIJEhAzAAiBsLcSEhAzARgyCBIQMwEZIhIQRDYaABeIACs2GgEXiAAkKTYaABdnKDYaARdnKGRxATUANQE0AEQqgQo0AZRnJEMkQyJDNQKxI7IQNAKyETIKshSziTUDsSOyEDEAshQ0A7ISKGSyEbOJ

Clear State Program:

BYEAQw==

Decompiled TEAL

Approval Program:

#pragma version 5

txn Fee
pushint 2000
>

txn RekeyTo
global ZeroAddress
!=
||

txn OnCompletion
int CloseOut
==
||

txn OnCompletion
int UpdateApplication
==
||

txn OnCompletion
int ClearState
==
||

txn OnCompletion
pushint DeleteApplication
==
||

txn OnCompletion
int OptIn
==
||

txn CloseRemainderTo
global ZeroAddress
!=
||

txn AssetCloseTo
global ZeroAddress
!=
||
bnz label1

txn ApplicationID
int 0
==
bnz label2

txn NumAppArgs
int 2
==
bnz label3

txn OnCompletion
int NoOp
==
bnz label4

err

label4:
	global GroupSize
	int 3
	==

	gtxn 0 TypeEnum
	int axfer
	==
	&&

	gtxn 0 XferAsset
	byte "New_Asset_ID"
	app_global_get
	==
	&&

	gtxn 0 AssetAmount
	int 0
	==
	&&

	gtxn 0 Sender
	gtxn 0 AssetReceiver
	==
	&&

	gtxn 0 RekeyTo
	global ZeroAddress
	==
	&&

	gtxn 0 CloseRemainderTo
	global ZeroAddress
	==
	&&

	gtxn 0 AssetCloseTo
	global ZeroAddress
	==
	&&

	gtxn 1 TypeEnum
	int axfer
	==
	&&

	gtxn 1 AssetAmount
	int 0
	>
	&&

	gtxn 1 XferAsset
	byte "Swap_Asset_ID"
	app_global_get
	==
	&&

	gtxn 1 Sender
	gtxn 0 Sender
	==
	&&

	gtxn 1 AssetReceiver
	global CurrentApplicationAddress
	==
	&&

	gtxn 1 RekeyTo
	global ZeroAddress
	==
	&&

	gtxn 1 CloseRemainderTo
	global ZeroAddress
	==
	&&

	gtxn 1 AssetCloseTo
	global ZeroAddress
	==
	&&

	gtxn 2 OnCompletion
	int NoOp
	==
	&&

	gtxn 2 NumAppArgs
	int 0
	==
	&&

	gtxn 2 Sender
	gtxn 1 Sender
	==
	&&
	assert

	gtxn 1 AssetAmount
	byte "Multiply"
	app_global_get
	*
	callsub label5

	int 1
	return

label3:
	byte "Swap_Asset_ID"
	app_global_get
	int 0
	==

	byte "New_Asset_ID"
	app_global_get
	int 0
	==
	&&

	global GroupSize
	int 2
	==
	&&

	gtxn 0 TypeEnum
	int pay
	==
	&&

	gtxn 0 Receiver
	global CurrentApplicationAddress
	==
	&&

	gtxn 0 Sender
	global CreatorAddress
	==
	&&

	gtxn 0 Amount
	pushint 302000
	==
	&&

	gtxn 1 ApplicationID
	global CurrentApplicationID
	==
	&&

	gtxn 1 OnCompletion
	int NoOp
	==
	&&
	assert

	txna ApplicationArgs 0
	btoi
	callsub label6

	txna ApplicationArgs 1
	btoi
	callsub label6

	byte "Swap_Asset_ID"
	txna ApplicationArgs 0
	btoi
	app_global_put

	byte "New_Asset_ID"
	txna ApplicationArgs 1
	btoi
	app_global_put

	byte "New_Asset_ID"
	app_global_get
	asset_params_get AssetDecimals
	store 0
	store 1
	load 0
	assert

	byte "Multiply"
	pushint 10
	load 1
	exp
	app_global_put

	int 1
	return

label2:
	int 1
	return

label1:
	int 0
	return

label6:
	store 2

	itxn_begin

	int axfer
	itxn_field TypeEnum

	load 2
	itxn_field XferAsset

	global CurrentApplicationAddress
	itxn_field AssetReceiver

	itxn_submit

	retsub

label5:
	store 3

	itxn_begin

	int axfer
	itxn_field TypeEnum

	txn Sender
	itxn_field AssetReceiver

	load 3
	itxn_field AssetAmount

	byte "New_Asset_ID"
	app_global_get

	itxn_field XferAsset

	itxn_submit

	retsub
		

Clear State Program:

#pragma version 5

int 0
return