smartcontractsalgorand

Is there a reference for a code snippet for how to read the global state of a smart contract?


I'm trying to read global state of this smart contract.

enter image description here

How can I get a readable state?


Solution

  • you can easily get a readable global state

    function getReadableGlobalState (delta: Array<GlobalStateDelta>) {
      const r = {} as ReadableGlobalStateDelta
    
      delta.forEach(d => {
        const key = Buffer.from(d.key, 'base64').toString('utf8')
        let value = null
    
        if (d.value.bytes) {
          // first see if it's a valid address
          const b = new Uint8Array(Buffer.from(d.value.bytes as string, 'base64'))
          value = algosdk.encodeAddress(b)
    
          // then decode as string
          if (!algosdk.isValidAddress(value)) {
            value = Buffer.from(d.value.bytes as string, 'base64').toString()
          }
        } else {
          value = d.value.uint
        }
    
        r[key] = value
      })
    
      return r
    }
    

    you can find more about it here.