Search code examples
smartcontractsscrypto

How to get the ressources address of a badge


I'm trying to build an Auction web application based on a scrypto smartcontract.

I have a register function that return a badge, from which I can build proof to call other methods that need authentication.

To build the proof, I need the address of the badge; using the pte-sdk, how would that be possible ?

I use :

 const manifestRegistration = new ManifestBuilder()
    //call the register function
    .callMethod(auction.auctionId, "register", [])
    //deposit the resource into my account
    .callMethodWithAllResources(accountAddress, "deposit_batch")
    .build()
    .toString()

    const receiptRegistration = await signTransaction(manifestRegistration);
    console.log(receiptRegistrationt)

here is receipt :

{
    "transactionHash": "b737899a3b78692d2ba49d83ccedeacd66f6168d107a2962828d621d6c73cb37",
    "status": "Success",
    "outputs": [
        "{\"type\":\"Bucket\",\"value\":\"Bucket(1027u32)\"}",
        "{\"type\":\"Unit\"}"
    ],
    "logs": [],
    "newPackages": [],
    "newComponents": [],
    "newResources": []
}

How do I know what is the resource in the returned bucket ?

Thank you


Solution

  • The first thing that pops into my head of solving this is returning the address as a string

    pub fn register() -> (Bucket, String) -> {
      ...
      (badge, badge.resource_address().to_string())
    }
    

    This should pop up in the outputs array