๐ On chain Collections
Perpetual3 offers an innovative way for merchants to publish on-chain collections directly.
@Subroutine(TealType.none)
def collection_init():
collection_name = Txn.application_args[1]
merchant_pubkey = Txn.application_args[2]
collection_max_supply = Txn.application_args[3]
collection_first_valid = Txn.application_args[4]
collection_last_valid = Txn.application_args[5]
collection_image_url = Txn.application_args[6]
collection_requirement_type = Txn.application_args[7]
collection_requirement_ID = Txn.application_args[8]
# phygital, tokengate, phygitaltokengate
collection_type = Txn.application_args[9]
fees_calculator = ScratchVar(TealType.uint64)
baseBox = Sha256(Concat(collection_name, merchant_pubkey,
Txn.sender(), collection_type))
fees_payment = Gtxn[1]
collectionMintedAmount = Concat(baseBox, Bytes("A"))
collectionMaxSupply = Concat(baseBox, Bytes("B"))
collectionFirstValid = Concat(baseBox, Bytes("C"))
collectionLastValid = Concat(baseBox, Bytes("D"))
collectionImageUrl = Concat(baseBox, Bytes("E"))
collectionrequirementTypeBoxName = Concat(baseBox, Bytes("F"))
collectionrequirementIDBoxName = Concat(baseBox, Bytes("G"))
return Seq([
fees_calculator.store(Mul(Int(2500), Int(7))),
fees_calculator.store(Mul(Int(400), Len(Concat(
collectionMintedAmount, collectionMaxSupply, collectionLastValid, collectionImageUrl)))),
Assert(fees_payment.amount() >= fees_calculator.load()),
Assert(fees_payment.receiver() == Global.current_application_address()),
App.box_put(collectionMintedAmount, Itob(Int(0))),
App.box_put(collectionMaxSupply, collection_max_supply),
App.box_put(collectionFirstValid, collection_first_valid),
App.box_put(collectionLastValid, collection_last_valid),
App.box_put(collectionImageUrl, collection_image_url),
App.box_put(collectionrequirementTypeBoxName,
collection_requirement_type),
App.box_put(collectionrequirementIDBoxName, collection_requirement_ID),
])Last updated