Understanding Attestation Response#
A successful Notarize call will return an Attestation Response, which we will break down here.
Example weather attestation response by an SGX enclave formatted as JSON
[
{
"enclaveUrl": "omitted",
"attestationReport": "AQAAAAIAAAD4EQAAAAAAAAMAAgAAAAAACgAPAJOacjP3nEyplAoNs5V/BgfL/8e2niibMd2lSZMZV5SwAAAAABUVCwf/gA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAABwAAAAAAAADlRzp8bNOrKrQCu5A02t2vmCHsO+a5/Du11uzLzT6ekwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9H4s7YPOeZFug8XZRRRlc+Z7Vfit98IfkZsrDpb+DxsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA67Cx768zCyjHKiKvJeqqxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQQAADoYWnc79tpibdmxv3XYL8oyY/hN5Vfi/fUFju+xafJcZYBU27Knf13c42ssayhP192yFq9tN0+0mmvKZNcLnTXxG76NsaVfFF6tBYAT+KjfyEnIS69AbRGJESM9r6nUgqsO4eILvEDZ/bdTRLbhdOMicQRRVqTKTSok3FoaemN3xUVCwf/gA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAAAAABwAAAAAAAACWs0emTloEXic2nCbm3NpR/XyFDps6OnnnGPQyYd7h5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjE9XddeWUD6WE393xoqCmgBWrI3tcBQLCBsJRJDFe/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnx88oavq2dYufVH0BxRHJ6/MWhYcaUqrAcukxayLqRcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrq0aRpapY8nVpydMzFfU6mrRkzmz5SY2bTdXyiIx9jY/LeFBJyOTyyQXT1Nd2K/RXGEjOOywPwXbAdSv/Lvb8gAAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fBQDcDQAALS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVqakNDQkRPZ0F3SUJBZ0lVUWp0VzA4OVBCdjgzTkM1emo4VHMwODY4R0FJd0NnWUlLb1pJemowRUF3SXcKY1RFak1DRUdBMVVFQXd3YVNXNTBaV3dnVTBkWUlGQkRTeUJRY205alpYTnpiM0lnUTBFeEdqQVlCZ05WQkFvTQpFVWx1ZEdWc0lFTnZjbkJ2Y21GMGFXOXVNUlF3RWdZRFZRUUhEQXRUWVc1MFlTQkRiR0Z5WVRFTE1Ba0dBMVVFCkNBd0NRMEV4Q3pBSkJnTlZCQVlUQWxWVE1CNFhEVEl6TVRJd056RTJNemN5TWxvWERUTXdNVEl3TnpFMk16Y3kKTWxvd2NERWlNQ0FHQTFVRUF3d1pTVzUwWld3Z1UwZFlJRkJEU3lCRFpYSjBhV1pwWTJGMFpURWFNQmdHQTFVRQpDZ3dSU1c1MFpXd2dRMjl5Y0c5eVlYUnBiMjR4RkRBU0JnTlZCQWNNQzFOaGJuUmhJRU5zWVhKaE1Rc3dDUVlEClZRUUlEQUpEUVRFTE1Ba0dBMVVFQmhNQ1ZWTXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUnUKQ2p6bHFrU0M0M3pqUnlVZlRKWk8va2ZraXdhNURudkxERGl1YXNxVjRvUUJWYitHQlZNREppZEE0UVI0QXdhZQpGczlVdGRLanRKTTlLMDVvUW5lb280SUNxRENDQXFRd0h3WURWUjBqQkJnd0ZvQVUwT2lxMm5YWCtTNUpGNWc4CmV4UmwwTlh5V1Uwd2JBWURWUjBmQkdVd1l6QmhvRitnWFlaYmFIUjBjSE02THk5aGNHa3VkSEoxYzNSbFpITmwKY25acFkyVnpMbWx1ZEdWc0xtTnZiUzl6WjNndlkyVnlkR2xtYVdOaGRHbHZiaTkyTkM5d1kydGpjbXcvWTJFOQpjSEp2WTJWemMyOXlKbVZ1WTI5a2FXNW5QV1JsY2pBZEJnTlZIUTRFRmdRVXlpWFNzZzJrYWpoME1iU3FBbGlyCjBGaWxLMUl3RGdZRFZSMFBBUUgvQkFRREFnYkFNQXdHQTFVZEV3RUIvd1FDTUFBd2dnSFVCZ2txaGtpRytFMEIKRFFFRWdnSEZNSUlCd1RBZUJnb3Foa2lHK0UwQkRRRUJCQkF4Ukl0SDA0MzRNMDFVcWI4OXB5eHBNSUlCWkFZSwpLb1pJaHZoTkFRMEJBakNDQVZRd0VBWUxLb1pJaHZoTkFRMEJBZ0VDQVJVd0VBWUxLb1pJaHZoTkFRMEJBZ0lDCkFSVXdFQVlMS29aSWh2aE5BUTBCQWdNQ0FRSXdFQVlMS29aSWh2aE5BUTBCQWdRQ0FRUXdFQVlMS29aSWh2aE4KQVEwQkFnVUNBUUV3RVFZTEtvWklodmhOQVEwQkFnWUNBZ0NBTUJBR0N5cUdTSWI0VFFFTkFRSUhBZ0VPTUJBRwpDeXFHU0liNFRRRU5BUUlJQWdFQU1CQUdDeXFHU0liNFRRRU5BUUlKQWdFQU1CQUdDeXFHU0liNFRRRU5BUUlLCkFnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJTEFnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJTUFnRUFNQkFHQ3lxR1NJYjQKVFFFTkFRSU5BZ0VBTUJBR0N5cUdTSWI0VFFFTkFRSU9BZ0VBTUJBR0N5cUdTSWI0VFFFTkFRSVBBZ0VBTUJBRwpDeXFHU0liNFRRRU5BUUlRQWdFQU1CQUdDeXFHU0liNFRRRU5BUUlSQWdFTk1COEdDeXFHU0liNFRRRU5BUUlTCkJCQVZGUUlFQVlBT0FBQUFBQUFBQUFBQU1CQUdDaXFHU0liNFRRRU5BUU1FQWdBQU1CUUdDaXFHU0liNFRRRU4KQVFRRUJnQ1FidFVBQURBUEJnb3Foa2lHK0UwQkRRRUZDZ0VBTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFDNgoxaXhnZ1lDd0ZEcjl6cmMrMUF3M3dGanc2THZtbHdJc0E1Q0JxUzlqQndJaEFQVzZ0RUJqcVZjanRzalYxWXIxCkt2NHE4VjNBLzNTU2lLaHJFVEtSTFUyaQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDbURDQ0FqNmdBd0lCQWdJVkFORG9xdHAxMS9rdVNSZVlQSHNVWmREVjhsbE5NQW9HQ0NxR1NNNDlCQU1DCk1HZ3hHakFZQmdOVkJBTU1FVWx1ZEdWc0lGTkhXQ0JTYjI5MElFTkJNUm93R0FZRFZRUUtEQkZKYm5SbGJDQkQKYjNKd2IzSmhkR2x2YmpFVU1CSUdBMVVFQnd3TFUyRnVkR0VnUTJ4aGNtRXhDekFKQmdOVkJBZ01Ba05CTVFzdwpDUVlEVlFRR0V3SlZVekFlRncweE9EQTFNakV4TURVd01UQmFGdzB6TXpBMU1qRXhNRFV3TVRCYU1IRXhJekFoCkJnTlZCQU1NR2tsdWRHVnNJRk5IV0NCUVEwc2dVSEp2WTJWemMyOXlJRU5CTVJvd0dBWURWUVFLREJGSmJuUmwKYkNCRGIzSndiM0poZEdsdmJqRVVNQklHQTFVRUJ3d0xVMkZ1ZEdFZ1EyeGhjbUV4Q3pBSkJnTlZCQWdNQWtOQgpNUXN3Q1FZRFZRUUdFd0pWVXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkw5cStOTXAySU9nCnRkbDFiay91V1o1K1RHUW04YUNpOHo3OGZzK2ZLQ1EzZCt1RHpYblZUQVQyWmhEQ2lmeUl1Snd2TjN3TkJwOWkKSEJTU01KTUpyQk9qZ2Jzd2diZ3dId1lEVlIwakJCZ3dGb0FVSW1VTTFscWROSW56ZzdTVlVyOVFHemtuQnF3dwpVZ1lEVlIwZkJFc3dTVEJIb0VXZ1E0WkJhSFIwY0hNNkx5OWpaWEowYVdacFkyRjBaWE11ZEhKMWMzUmxaSE5sCmNuWnBZMlZ6TG1sdWRHVnNMbU52YlM5SmJuUmxiRk5IV0ZKdmIzUkRRUzVrWlhJd0hRWURWUjBPQkJZRUZORG8KcXRwMTEva3VTUmVZUEhzVVpkRFY4bGxOTUE0R0ExVWREd0VCL3dRRUF3SUJCakFTQmdOVkhSTUJBZjhFQ0RBRwpBUUgvQWdFQU1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ0pnVGJ0VnFPeVoxbTNqcWlBWE02UVlhNnI1c1dTCjR5L0c3eTh1SUpHeGR3SWdScVB2QlNLenpRYWdCTFFxNXM1QTcwcGRvaWFSSjh6LzB1RHo0TmdWOTFrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDanpDQ0FqU2dBd0lCQWdJVUltVU0xbHFkTkluemc3U1ZVcjlRR3prbkJxd3dDZ1lJS29aSXpqMEVBd0l3CmFERWFNQmdHQTFVRUF3d1JTVzUwWld3Z1UwZFlJRkp2YjNRZ1EwRXhHakFZQmdOVkJBb01FVWx1ZEdWc0lFTnYKY25CdmNtRjBhVzl1TVJRd0VnWURWUVFIREF0VFlXNTBZU0JEYkdGeVlURUxNQWtHQTFVRUNBd0NRMEV4Q3pBSgpCZ05WQkFZVEFsVlRNQjRYRFRFNE1EVXlNVEV3TkRVeE1Gb1hEVFE1TVRJek1USXpOVGsxT1Zvd2FERWFNQmdHCkExVUVBd3dSU1c1MFpXd2dVMGRZSUZKdmIzUWdRMEV4R2pBWUJnTlZCQW9NRVVsdWRHVnNJRU52Y25CdmNtRjAKYVc5dU1SUXdFZ1lEVlFRSERBdFRZVzUwWVNCRGJHRnlZVEVMTUFrR0ExVUVDQXdDUTBFeEN6QUpCZ05WQkFZVApBbFZUTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQzZuRXdNRElZWk9qL2lQV3NDemFFS2k3CjFPaU9TTFJGaFdHamJuQlZKZlZua1k0dTNJamtEWVlMME14TzRtcXN5WWpsQmFsVFZZeEZQMnNKQks1emxLT0IKdXpDQnVEQWZCZ05WSFNNRUdEQVdnQlFpWlF6V1dwMDBpZk9EdEpWU3YxQWJPU2NHckRCU0JnTlZIUjhFU3pCSgpNRWVnUmFCRGhrRm9kSFJ3Y3pvdkwyTmxjblJwWm1sallYUmxjeTUwY25WemRHVmtjMlZ5ZG1salpYTXVhVzUwClpXd3VZMjl0TDBsdWRHVnNVMGRZVW05dmRFTkJMbVJsY2pBZEJnTlZIUTRFRmdRVUltVU0xbHFkTkluemc3U1YKVXI5UUd6a25CcXd3RGdZRFZSMFBBUUgvQkFRREFnRUdNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUV3Q2dZSQpLb1pJemowRUF3SURTUUF3UmdJaEFPVy81UWtSK1M5Q2lTRGNOb293THVQUkxzV0dmL1lpN0dTWDk0Qmd3VHdnCkFpRUE0SjBsckhvTXMrWG81by9zWDZPOVFXeEhSQXZaVUdPZFJRN2N2cVJYYXFJPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgA=",
"reportType": "sgx",
"attestationData": "9.90",
"responseBody": "{\"latitude\":42.917397,\"longitude\":-74.37686,\"generationtime_ms\":0.16999244689941406,\"utc_offset_seconds\":0,\"timezone\":\"GMT\",\"timezone_abbreviation\":\"GMT\",\"elevation\":117.0,\"daily_units\":{\"time\":\"iso8601\",\"rain_sum\":\"mm\"},\"daily\":{\"time\":[\"2024-02-28\"],\"rain_sum\":[9.90]}}",
"responseStatusCode": 200,
"timestamp": 1709730029,
"oracleData": {
"signature": "sign1x2kx7gssjd9a5davpazug4mj5k82634q5n4cha03akp734cwgsqwhrm4rfxpd4h6fpkz253v9yqp00s9fqpgpyfafcdjk08sy4fhvpps9fyug6x7nlr2ws0209uhsps4dv9g6998qnhc2g6f6vw4pug7qmefrdv65eg2d6v2lq2r5ezldy9rfgw2xrauwzfms3d5r793ldzsyjag5g2",
"userData": "{ c0: { f0: 83078176003060725451284209119789060u128, f1: 4194512u128, f2: 990u128, f3: 1709730029u128, f4: 200u128, f5: 146741781957618190040822128409835696737u128, f6: 152036601506766190083586533414400257325u128, f7: 69438642371722949660980644949730617443u128, f8: 133532659421421713743881801343056817714u128, f9: 152038006197340572103123007711229066597u128, f10: 66696071085301770748652136257525407604u128, f11: 60086277185945482657482972579083134520u128, f12: 146762247151254361341361560418480108080u128, f13: 1836413791u128, f14: 121200813359967904192723595955179970916u128, f15: 23856u128, f16: 0u128, f17: 5522759u128, f18: 36893488147419103234u128, f19: 221360928884514619396u128, f20: 13055389343712134841237569546u128, f21: 13856407623565317u128, f22: 156035770564570580066107481452631621659u128, f23: 3900269670161044694030315513202u128, f24: 162743726813863731210145153184655802480u128, f25: 101188681738744639914108759155086748777u128, f26: 149456393680743922584091041160660086377u128, f27: 42816717959947032433996830433837802860u128, f28: 132119436183189587630719372684727700264u128, f29: 64042929165508395635299690384626118507u128, f30: 61431102749981217983499061483759611950u128, f31: 13875u128 }, c1: { f0: 55340232221128654848u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c2: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c3: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c4: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c5: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c6: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c7: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }}",
"report": "{ c0: { f0: 84855022739072527368193u128, f1: 68385684764540665893611210958203650051u128, f2: 242957950407643292263866366603922545911u128, f3: 54648694067525505081604253854u128, f4: 4082482497131797u128, f5: 0u128, f6: 0u128, f7: 129127208515966861317u128, f8: 233766822598046444780732758795436574693u128, f9: 196218172098311655326695594710050546072u128, f10: 0u128, f11: 0u128, f12: 153386052680309655679396867527014121204u128, f13: 35972203959719964238382729092704599014u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 65537u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 261416126709284881514438155237913112811u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 337324841058634346475366972519769706564u128, f29: 252860127799780593534801600072839553239u128, f30: 236169299281726223428842072154214868933u128, f31: 195612957357288116730058683633947877804u128 }, c1: { f0: 117891055671150134937207206768291420u128, f1: 327718390601232644976585669983462482511u128, f2: 24330412716767774705623998119162324926u128, f3: 138829435947332207818351983315511379419u128, f4: 17534128811673485667330409u128, f5: 0u128, f6: 0u128, f7: 554597137599850363245001965568u128, f8: 51321760518872024617203618802506399744u128, f9: 67728825339782400665172072549140061414u128, f10: 3840007777u128, f11: 0u128, f12: 158837950468731255509735392413912924160u128, f13: 90434782647414738426891946114991426246u128, f14: 4286301584u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 2814754062073856u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 324754746029249963345795058866300387328u128, f25: 262713569315817736053191240715644376071u128, f26: 396987308u128, f27: 0u128, f28: 154784207227359996978187994524398125056u128, f29: 165436057910215533569203026795993875916u128, f30: 326264497880770141808294999852069102498u128, f31: 98517025443571631514782680799578348853u128 }, c2: { f0: 12004732790720997080891679056550808575u128, f1: 33355783264191645768789692391696894730u128, f2: 60049829442654824440068874493786594074u128, f3: 86749189800108151757823289210582680109u128, f4: 89408317962157473941141852435021382996u128, f5: 116247298448171836707225814442806559810u128, f6: 153298516702326844018032793253697894448u128, f7: 97503207721845674876966991394193684528u128, f8: 92066185763862219525981875178096847482u128, f9: 158631690561421924035459988786500419911u128, f10: 76333970513925110025764547352733963623u128, f11: 86951652772898462981681034850997918314u128, f12: 94896799011537378893460037220868506201u128, f13: 116147467564052018692635533112133645142u128, f14: 86754362688545102779307753469975033145u128, f15: 112119725805968183605533498525349401716u128, f16: 108017770325421329463318335114491808837u128, f17: 86837782966952094203466333913022481712u128, f18: 104299154292433981337878436150804502124u128, f19: 102970007423461191398703387622748865914u128, f20: 158756673053749662613813693058116962644u128, f21: 120250821724838927997570695467201021027u128, f22: 90731620886030983844249335288351250259u128, f23: 64167425784331583248880956763149597011u128, f24: 158714297810016602898334694321548514394u128, f25: 76136666399556079529596080858030625618u128, f26: 104215935482822920403569083451176409465u128, f27: 104039541035603526609816581170645779030u128, f28: 108114213427665675835456091415639513459u128, f29: 65471119637970862968276758529751402833u128, f30: 137254884056849384459604142725565400405u128, f31: 142769694527016630226411770057918542179u128 }, c3: { f0: 89112578245003088838611936818941153130u128, f1: 112186499542433954375491037642502208106u128, f2: 90784520335163547732013059839169092170u128, f3: 88098580733429188304785517654213749060u128, f4: 13818678782623848242017603879574981974u128, f5: 147820478781135256057168735290326086470u128, f6: 158601004626878902877599539347155414609u128, f7: 113324135867913542756083826620225910600u128, f8: 74972654877031102216601080268178673456u128, f9: 118640788039913225795845957010654258442u128, f10: 57522524206617649377895238896809301572u128, f11: 76395809444991429016706081744091699303u128, f12: 104055463043983720312313305835522974568u128, f13: 94896799018974010676587692096514886252u128, f14: 66925915710382479181304097458923270998u128, f15: 140080186552622183050687868903337785686u128, f16: 66924476944912156571061685914505720377u128, f17: 98992299697508934570972255816522545477u128, f18: 132156009718758105502505635427965556333u128, f19: 161279583780376529355820241584231039338u128, f20: 86988240499279864031395599405181786217u128, f21: 90851712646405306649273966649867921772u128, f22: 86910759077318896229532865192996655702u128, f23: 89481269114107147013099085316803215693u128, f24: 94922557363533324889281353390439350605u128, f25: 97414248676890686064111993804100224299u128, f26: 64162090082353134852911296187142010690u128, f27: 68061606517752099038461575957851489346u128, f28: 97414252019350595078397302451144248628u128, f29: 108006557258706241659985402300131793474u128, f30: 147935278331152620242894529988311204400u128, f31: 109335559370310372277484484735535696218u128 }, c4: { f0: 108006557258706241659985474927626385237u128, f1: 100088524550901356562081163050370548272u128, f2: 86749273541778128252673674470155180655u128, f3: 86806937632782324422938379499129489745u128, f4: 100088524550901337654184547093126983761u128, f5: 89501715209068986181232175188938414703u128, f6: 104222184131274927152875686304401412417u128, f7: 94714031756334156656567492352616190273u128, f8: 96085101416419075191047717346100738371u128, f9: 130645070357909842285010588752337528641u128, f10: 86744078235532168310844955291706020916u128, f11: 97455544295713879545243905514477798215u128, f12: 130645070357909843409829925202292064586u128, f13: 88130178435234664984192167563704226868u128, f14: 108006554474245330756093469187236906817u128, f15: 97466053372950493505749323473483811913u128, f16: 88130178435234981346425003090388464738u128, f17: 86806224810738141373754240919543170881u128, f18: 110696878246818504645480466692776544593u128, f19: 102689462638219053953715929901094429257u128, f20: 86806224810789133026584909959423017282u128, f21: 94964376728773384814305555424564234577u128, f22: 86760182472435095491075972571471169875u128, f23: 104039701701017929686387466547358679629u128, f24: 94964376747633841451467273574021681473u128, f25: 86743850775774187631488817526718220627u128, f26: 86738642548474510552846856696003380822u128, f27: 130645070357890500596716091135427166529u128, f28: 108011726166852882164521742062605915188u128, f29: 108005175979728448444544556956631253831u128, f30: 137254802922232358469698402495009801553u128, f31: 137259792715934442779251126941000429935u128 }, c5: { f0: 86743671559825713225810936288001212741u128, f1: 65185195345608567120154475649334068045u128, f2: 65357457586765783080977191293115922537u128, f3: 86998423942360155305591100450693936961u128, f4: 154472602469542241641585002430073029429u128, f5: 13549021765187881145134586349375603269u128, f6: 152073519918233207828023866234766653003u128, f7: 104038968442143258462312395470080267333u128, f8: 60049831370206298086862839912815861828u128, f9: 92065270838263588161724692358245264685u128, f10: 102403394931704788846174182320797996114u128, f11: 86744001382976538097282952900259301705u128, f12: 110935596339372355082162529425482467687u128, f13: 102757753904718435832159428816450184530u128, f14: 13641730763236203195338302233747353409u128, f15: 102751686145939161927243829626473498445u128, f16: 110669981079482448319058586804081677637u128, f17: 90850942152570950481689628423833072226u128, f18: 90731562025364983292125121457312321878u128, f19: 92269112234738910460234604810152927754u128, f20: 93307304611000405257194885735877070165u128, f21: 87034648393070435116482161781592515701u128, f22: 153283362559674347752342369129799828042u128, f23: 162608910905757605780267968350111599223u128, f24: 90789749960275843698637110143409874241u128, f25: 141298973437060242123296827944779741013u128, f26: 162547292534704897884193116506469267525u128, f27: 133532497310657633341072149250505861185u128, f28: 113521522523369678774676020478138865223u128, f29: 102694834785533074997134942172914010696u128, f30: 130649998573320348463870441913035747154u128, f31: 138624983733330959992385555618662732398u128 }, c6: { f0: 92159075952097798322699461462172911460u128, f1: 138863807754577485370649275968502855490u128, f2: 102886685864261067444504776195468258659u128, f3: 108089793406502879224265658521229355841u128, f4: 150832375731722087451752855924366591303u128, f5: 69521351739172570572808364160782783303u128, f6: 102756435944532396704924302022142279993u128, f7: 120084626246215828157538855856678449776u128, f8: 153391974005147988715650772534534875957u128, f9: 86837725691842740968865538395725325867u128, f10: 68198029715524678187548970722900193876u128, f11: 151917789119366573768094736235530178167u128, f12: 114668498408916468643246581063172640578u128, f13: 65533711314949557364595280228358172754u128, f14: 94796928902038869219176506719306281324u128, f15: 135832155811633629464337931991323143034u128, f16: 88197415573835596094480142823048037698u128, f17: 64188965780662179399672137617773840481u128, f18: 65517870053603420032645768010385741665u128, f19: 114575036516425533478059638766758409059u128, f20: 76198953448334894703426641276428962938u128, f21: 109263499842199640047903063019382268490u128, f22: 64230461842459213854876536461822480708u128, f23: 62729141095620952142801360698998932047u128, f24: 143849141874647537468077485084531455339u128, f25: 158423513593444577201225835437018140268u128, f26: 109372291527157337602447472214371550545u128, f27: 86645324449472246601531337146191921741u128, f28: 88026069454382460688250206663376717159u128, f29: 137296078894976326897348732728908139841u128, f30: 117311701563535690054873511157550047828u128, f31: 94621683947702260380930330556642702925u128 }, c7: { f0: 157266585692263169432748518083816618295u128, f1: 86677348170789000027156131147443557186u128, f2: 162521268531709082938246788278115119159u128, f3: 104038968442143258459157865742129909300u128, f4: 60049831370206298086862839912815861828u128, f5: 92065270838263588161724692358245264685u128, f6: 102403394931704788846174182320797996114u128, f7: 86744001382976675045910956351848401225u128, f8: 137546180655561108076056018404869753191u128, f9: 89678581623839706670222579498013315895u128, f10: 13911653348267379143928883463380883815u128, f11: 109616997758559601014350933934427423841u128, f12: 157234559050145056110467932273002239827u128, f13: 114720701137339631629859795251332461410u128, f14: 157255307963199385955327972200009384258u128, f15: 108094807033958817984488532228539573002u128, f16: 70902625428892611236952963291692877175u128, f17: 142566462633127032433531710020361869616u128, f18: 87034648392996604956291596012756222279u128, f19: 88130565149443671870324176594388781642u128, f20: 90794921967916445037846635642051909684u128, f21: 112057438767757703995190256887814518869u128, f22: 88130827461549207523091912353999911497u128, f23: 119880831756198184460899244703266522983u128, f24: 108203921181293991924616096290221553495u128, f25: 92118795085093294238435397575365903664u128, f26: 132207609996927537498699975159394430037u128, f27: 90851712725643296445717670572126652013u128, f28: 90731885812260910872707057926404133206u128, f29: 92159075952138897077551333410263680866u128, f30: 114720701132697431966616368839344472387u128, f31: 118920583898637034375179436867628646722u128 }, c8: { f0: 120208391563958328903418431752285145928u128, f1: 146496827975129713628545140622596143689u128, f2: 162516038770122090537536818276459181893u128, f3: 116184260795578461401620612162842740065u128, f4: 97300828021546254909120508427600292423u128, f5: 118931901008424116384729958666790529898u128, f6: 100036301301652645797615676665268169834u128, f7: 88259985781804142268996583522069936693u128, f8: 120177358927007647960329552767271456359u128, f9: 157281614327971246846144182102493985361u128, f10: 96152543435324426254685485864430223665u128, f11: 90732169228477843146456407899029977170u128, f12: 143962642878211164384679925272543652712u128, f13: 64080597579852368723578581181397102179u128, f14: 141461154356937785131350677709217230435u128, f15: 76027425043751003220509970687738075226u128, f16: 76333687204450208078758577613038439540u128, f17: 104215936829747759056653563243130086518u128, f18: 150764531549494692607960815007211538518u128, f19: 162536115989282966984643484707285716580u128, f20: 108006593375585103515344389694009011819u128, f21: 65471116944522798882642801786913697608u128, f22: 135920100576416446773842260002668373077u128, f23: 162546687390846958021578236361531540280u128, f24: 86941307401230900785174445205576036458u128, f25: 104195206872586117789496688062422275919u128, f26: 73654539828148610787525649008678104943u128, f27: 86760223015317314675068160783488144199u128, f28: 153107513048634507624915175849216461364u128, f29: 133334437843788124256415413717389227608u128, f30: 60049826688636443598812574127591215442u128, f31: 111994015668589605791723790244161858861u128 }, c9: { f0: 2864421821820229u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }}",
"address": "aleo1jpz58re8eydtcmxr3s2gdp4cdtumuyumnnvf2mmwq6shllkhusgqn53vja",
"encodedPositions": {
"data": {
"Pos": 2,
"Len": 1
},
"timestamp": {
"Pos": 3,
"Len": 1
},
"statusCode": {
"Pos": 4,
"Len": 1
},
"method": {
"Pos": 17,
"Len": 1
},
"responseFormat": {
"Pos": 16,
"Len": 1
},
"url": {
"Pos": 5,
"Len": 9
},
"selector": {
"Pos": 14,
"Len": 2
},
"encodingOptions": {
"Pos": 18,
"Len": 1
},
"requestHeaders": {
"Pos": 19,
"Len": 13
},
"optionalFields": {
"Pos": 32,
"Len": 4
}
},
"encodedRequest": "{ c0: { f0: 83078176003060725451284209119789060u128, f1: 4194512u128, f2: 0u128, f3: 0u128, f4: 200u128, f5: 146741781957618190040822128409835696737u128, f6: 152036601506766190083586533414400257325u128, f7: 69438642371722949660980644949730617443u128, f8: 133532659421421713743881801343056817714u128, f9: 152038006197340572103123007711229066597u128, f10: 66696071085301770748652136257525407604u128, f11: 60086277185945482657482972579083134520u128, f12: 146762247151254361341361560418480108080u128, f13: 1836413791u128, f14: 121200813359967904192723595955179970916u128, f15: 23856u128, f16: 0u128, f17: 5522759u128, f18: 36893488147419103234u128, f19: 221360928884514619396u128, f20: 13055389343712134841237569546u128, f21: 13856407623565317u128, f22: 156035770564570580066107481452631621659u128, f23: 3900269670161044694030315513202u128, f24: 162743726813863731210145153184655802480u128, f25: 101188681738744639914108759155086748777u128, f26: 149456393680743922584091041160660086377u128, f27: 42816717959947032433996830433837802860u128, f28: 132119436183189587630719372684727700264u128, f29: 64042929165508395635299690384626118507u128, f30: 61431102749981217983499061483759611950u128, f31: 13875u128 }, c1: { f0: 55340232221128654848u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c2: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c3: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c4: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c5: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c6: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c7: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }}",
"requestHash": "296501215970795030411580168017829021648u128",
"timestampedRequestHash": "83488943442368415878576434941658115411u128"
},
"attestationRequest": {
"url": "archive-api.open-meteo.com/v1/archive?latitude=42.93869&longitude=-74.18819&start_date=2024-02-28&end_date=2024-02-28&daily=rain_sum",
"requestMethod": "GET",
"selector": "daily.rain_sum.[0]",
"responseFormat": "json",
"requestHeaders": {
"Accept": "*/*",
"DNT": "1",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
},
"encodingOptions": {
"value": "float",
"precision": 2
}
}
}
]
Example BTC/USDC quote attestation response by a Nitro enclave formatted as JSON
{
"attestationReport": "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",
"reportType": "nitro",
"attestationData": "59408.01000000",
"responseBody": "{\"symbol\":\"BTCUSDC\",\"price\":\"59408.01000000\"}",
"responseStatusCode": 200,
"nonce": "ccce43e57f1c44ba9d8ba70c9cd151672ef0f906e3b98aac45f66f9e5068636d",
"timestamp": 1725008028,
"oracleData": {
"signature": "sign1yn6phgkxpfunu8l9ewc82de6nu55zzez28up37nm5we80p2z4qq2xyzf0xx08pwg3llku6txnemjced5unnh5e5l880x3v2rwdje2qy4xwvk3mgurqnxvcuzv40ssqg7lx8rg5s4hz0klmmrvkhdct4hzzlhsp4cwzlexlcjye5a544vaucqcs698nwq908ph8rz5qmmtmhsgg4y0th",
"userData": "{ c0: { f0: 83077145937816122806495900722528270u128, f1: 4194320u128, f2: 5940801000000u128, f3: 1725008028u128, f4: 200u128, f5: 63041935364884317995582503489240658017u128, f6: 152114491104286018974290347557927874657u128, f7: 110768634480232840853030308057786442601u128, f8: 17220u128, f9: 435459551856u128, f10: 0u128, f11: 5522759u128, f12: 147573952589676412930u128, f13: 0u128, f14: 55340232221128654848u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c1: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c2: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c3: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c4: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c5: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c6: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c7: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }}",
"report": "{ c0: { f0: 156041165208724867994893291255607936132u128, f1: 130768977891686035315541715535712445804u128, f2: 65383418747631845451668942677490086501u128, f3: 133453554045781821053638368587514196281u128, f4: 145433403805334237040584272683024607081u128, f5: 134047651686532690120740824502951506789u128, f6: 71320009559794699847772125248361751408u128, f7: 267163029976570322151785657395876341806u128, f8: 160817819495622755897725644230081684404u128, f9: 272941851679105779343843431121167150575u128, f10: 214228591534597146723694420824838276484u128, f11: 308566972771111169730568573940310889569u128, f12: 215777261078696533994066537595816337280u128, f13: 17356695615235002434592379545030409878u128, f14: 146588840453784884285507812561630496080u128, f15: 116990698558086918130768530081118190705u128, f16: 48u128, f17: 0u128, f18: 0u128, f19: 311278127076315502006615865277573235712u128, f20: 18434602281589478005382016318899087191u128, f21: 296196923782346364347344515300785896824u128, f22: 13607577391895986u128, f23: 0u128, f24: 0u128, f25: 228297337001793638367232u128, f26: 0u128, f27: 0u128, f28: 3830194944029703872942113292288u128, f29: 0u128, f30: 0u128, f31: 64260028180503855944056814148438196224u128 }, c1: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 3168265u128, f4: 0u128, f5: 0u128, f6: 53154683027456u128, f7: 0u128, f8: 0u128, f9: 891787880038139953152u128, f10: 0u128, f11: 0u128, f12: 14961722611948445101906198528u128, f13: 0u128, f14: 0u128, f15: 251016131220905758603159897987088384u128, f16: 0u128, f17: 0u128, f18: 18609191940988822220653298843924824064u128, f19: 12376u128, f20: 0u128, f21: 0u128, f22: 207635808256u128, f23: 0u128, f24: 0u128, f25: 154696116615530903167519866259721158656u128, f26: 1339686114168286448735870861768284517u128, f27: 135581255570207101336025210130776719874u128, f28: 63818581871520994197558765282350565585u128, f29: 65564856601879393085149581411146108801u128, f30: 146762389218449641779117774626249322515u128, f31: 110362513673010855677066021725243667559u128 }, c2: { f0: 16002746782972337931965864452478493029u128, f1: 14644001385438238062873278203680342278u128, f2: 65194540546214638698862418496839549708u128, f3: 134768117700959723719257280041131715945u128, f4: 129174978964704168457259762063276324961u128, f5: 134866694584729194185650327887075505015u128, f6: 66727286348430714979528598992816320627u128, f7: 73368193228303744347168371053335894580u128, f8: 112995150077927076331799319934264225882u128, f9: 138838799990053843979198846947103551827u128, f10: 15987169892396738171518823335662677609u128, f11: 5758318542794315194352652920891462407u128, f12: 113000079033902721746767398808555228170u128, f13: 4010177419220567237219489109487913732u128, f14: 134528217138634473357168884064207844876u128, f15: 73369125904708743234871018926599398755u128, f16: 156098356535284061250852425596261315684u128, f17: 178334770360483737106279363259220715636u128, f18: 5318899907487820504231327696051621448u128, f19: 130544159967402717464703140836202167136u128, f20: 61495433261378761377221569305893016452u128, f21: 80109886944788069628892375208375689401u128, f22: 223213547107148499901916691600191559011u128, f23: 93526351341969599928395765756775853518u128, f24: 328066967803286733555751173264571410849u128, f25: 2684397273013657863757327789294886307u128, f26: 64799986648361905643634998290972409904u128, f27: 135830494139160250812376112114568791562u128, f28: 6226578792937090300295406101972660482u128, f29: 241132162914780200453623545392822081234u128, f30: 112657146426367855321834513441987501799u128, f31: 193292753893844622311951192780920792549u128 }, c3: { f0: 311163283690559912319595038132737872778u128, f1: 96760303577943996719386225872771831398u128, f2: 175984715883559618610279183548964607604u128, f3: 2663689140631008987834175462682460761u128, f4: 304002739640275511601146520524025762050u128, f5: 63818581871520994197558765282347383015u128, f6: 20194532657874829472795971456592458057u128, f7: 65705585491353666819468972964140420400u128, f8: 63944136253868260283130058248467132428u128, f9: 152136436337552610183698802060950701593u128, f10: 76020683808724120286889026781408734575u128, f11: 65429188436890075243984134354737705009u128, f12: 12212509222610378100066101573975552560u128, f13: 113000079271590835567049804839055065862u128, f14: 4019044399327372785612463289840437764u128, f15: 5758318546508191979303583952281470037u128, f16: 132166776360273987790188185068208524291u128, f17: 82153991858810144096373904179044180332u128, f18: 111670647723901262781793287833563562242u128, f19: 194328043647410908834518307650421696235u128, f20: 218268041859500207966818706242788748915u128, f21: 25079078371788882315331146770036815537u128, f22: 148037775849631280873767365114792483542u128, f23: 53176336557638053536612836490362515475u128, f24: 64148960774512387748054266522875749897u128, f25: 1345778839708529072769124175373611072u128, f26: 240785304473646293300823356102159695617u128, f27: 100853421796707580202719813319755421965u128, f28: 1339673755189667405418948083040792726u128, f29: 545252255993038001153125323912130694u128, f30: 131224418951694307630119393457135052336u128, f31: 186604200101300216237594832860654081660u128 }, c4: { f0: 151442076454958694309384516259033397565u128, f1: 53754267751600002420756380396769690548u128, f2: 38583320317302191252033589232148405669u128, f3: 269853629886089750274292477273977738090u128, f4: 64799915674087223998116752404004073071u128, f5: 173815066867041753444214543350864609922u128, f6: 178334790641036958546392051632144785029u128, f7: 5758318541556356263566715304038747720u128, f8: 8037878704330480932469583941996778246u128, f9: 16007939079830858592278783466347261249u128, f10: 129028820562530910945368451283204653315u128, f11: 134866694584729194185650327887075505015u128, f12: 66716820545853108110057094893837103219u128, f13: 70709696357167260236536860441195272757u128, f14: 110767310955139920092937077096758718554u128, f15: 148179743798592015176329736311643574065u128, f16: 65564902153128363753206849316466733422u128, f17: 133214566493886631259278718764959739959u128, f18: 148142343282919460556148339148213270629u128, f19: 60393926179409375322764523104801158261u128, f20: 178334770360483737106274320019404058213u128, f21: 5318899907487820504231327696051621448u128, f22: 98392881053462357747614692325863362301u128, f23: 47635620122499274817710854094932237211u128, f24: 125916046238350769996723623603554030187u128, f25: 42367073348703940210810668835456336584u128, f26: 69554764448561284855044520706529522889u128, f27: 321635777077897219814308680414906284556u128, f28: 338958353018834612099369111560341782947u128, f29: 38989018442987879910431595894032828420u128, f30: 200585060456456416565815256016028697635u128, f31: 113000080539404766151095454183708071619u128 }, c5: { f0: 274058182310213073698379869567079157277u128, f1: 38989018437727478354095503504011334152u128, f2: 38989018466818849018979976600472322319u128, f3: 154794870568586028593448885282733884447u128, f4: 146740423057232991414017184122780203632u128, f5: 145390441402958663473615571792072633443u128, f6: 63036803915573807001153602030616410721u128, f7: 66732315991791400914259992338106704481u128, f8: 72289169275695393432103715267242976354u128, f9: 274197533678460074080788847926867158583u128, f10: 334358583771684749321960247644460876861u128, f11: 20797246736834760897094759263011878477u128, f12: 160265726160169792153968203618539673715u128, f13: 297748065094797060768728541109671592157u128, f14: 215806517135598662819482601730797108323u128, f15: 83510800816051759528811546746845617447u128, f16: 119366926145396660390153500802562349765u128, f17: 2668861027275464144411438969854630915u128, f18: 185329191995047802586170710604654706705u128, f19: 134501318909712132046868727015199010724u128, f20: 63881828690870785452010848156958853937u128, f21: 16207398392744590735859235399005308429u128, f22: 70699433466311116402404621507927345712u128, f23: 76058820847395038697194334270189273862u128, f24: 138844399869116665604734947900481942327u128, f25: 132166776360273987790188185068210369069u128, f26: 64053212901470901633388891906250269036u128, f27: 66711708826815180080076296401322127922u128, f28: 5758318557030842877664705160674357810u128, f29: 132103495858426051336753595606505884675u128, f30: 156098356535284062213126766919824925489u128, f31: 134487941348414821035639062006692931700u128 }, c6: { f0: 14644001385438238062874674566267691886u128, f1: 8037878704330480932469583942034457356u128, f2: 25286573566032590842024239942980431169u128, f3: 86851591070750336455717937987011695874u128, f4: 154794729368112024508226481531827261489u128, f5: 7980605733146738993104216853291492716u128, f6: 21891368437567396761060381594140879621u128, f7: 48927288995289422670628128453884596142u128, f8: 258188651161112957830656043132237877344u128, f9: 247435350511448651532640503060700009726u128, f10: 140991147185042726430993510609684020147u128, f11: 186895855028583296067933636194189103675u128, f12: 310380921606265369598655303329151504613u128, f13: 1334545792534793299069618499518599728u128, f14: 170256389449774264521830464052290192127u128, f15: 32178906267433590123702827193682224660u128, f16: 26605775637424637605596433644789711955u128, f17: 189443622415353257762176334213025474188u128, f18: 5342853264578653906286485592712968240u128, f19: 161088312802107887170240490877921329667u128, f20: 131838567438345711988079032373837068080u128, f21: 158682700977576260881918787171669339250u128, f22: 153388042540986923798725508525548514675u128, f23: 129174978964704168457259762063275946798u128, f24: 144150557102786809516715570544695206253u128, f25: 69355541517365306346436702772240331567u128, f26: 131854326534425953989548790807839257444u128, f27: 96401035972455491226775938355212936549u128, f28: 36838557113664131396806230051861577166u128, f29: 93030620896728297997269087774846183437u128, f30: 48455895159343022520539456815019007639u128, f31: 60470462973832607739571719332693351496u128 }, c7: { f0: 111286554045745700429853798980599170904u128, f1: 159594491396310535145975996214441295118u128, f2: 3123265584284528759357986443633098770u128, f3: 27924213149871026489480577684460417220u128, f4: 7537979505587813146428554020066871808u128, f5: 4009706745221302873941599744029398120u128, f6: 134522270638860758578803711981129904131u128, f7: 61660537066589544772767795085874247220u128, f8: 66697171745289973142282891567400120186u128, f9: 129497900356820153087834974632772329774u128, f10: 115980396730468778132908763026635842934u128, f11: 162671684215386440705831070854483489107u128, f12: 65564856601879393085149581411146100335u128, f13: 18858750611153827423867564860201578507u128, f14: 40128127238809624745549033018192364294u128, f15: 31040649768467829140912371028387302679u128, f16: 171721471415875595752886343608701301261u128, f17: 25511444641014492964411199697713836431u128, f18: 137483774148730903822291806016009277744u128, f19: 134683131143311701818273052235679035252u128, f20: 8037878704330480932469584019699561569u128, f21: 16007939079830858592278783466347261249u128, f22: 139823605731424817587317172651689459971u128, f23: 129461553550906213592447633597354094637u128, f24: 158682721259985864533589211118920677688u128, f25: 153388042540986923798725508525548514931u128, f26: 57182887077423529737261011594587960880u128, f27: 155582633841412053171711489446214894721u128, f28: 259618198756576975563839544825774460165u128, f29: 285257540571690581012408279865360506395u128, f30: 143942259101289254393138015735355735713u128, f31: 276769091913700302687871694332370399472u128 }, c8: { f0: 208677483843474381986081221282734144279u128, f1: 4019206685837637110311393514962709811u128, f2: 5253065169906424236904230356720981u128, f3: 5327337380604407957546176503399976496u128, f4: 215440179130053926629945665369049275696u128, f5: 64735240520640672823619335956923168934u128, f6: 223858872440293529203707385926348113439u128, f7: 78364581925220137998008671925148662809u128, f8: 63805033124481727400733895394750499376u128, f9: 242353360541896434988764114239479612004u128, f10: 304286754799359235557098391899398618111u128, f11: 110980589699214444388363971697275108087u128, f12: 322465345391463321235294760798432122653u128, f13: 130965269470296274957418782707559732997u128, f14: 195178764767643465785002849530402749153u128, f15: 161363187247956332810885816167632432704u128, f16: 132034620131090132027246741196878735862u128, f17: 146793663587762942489245982343134624073u128, f18: 16820681276197282378522478976777610595u128, f19: 210599363278218916858823088773912449436u128, f20: 154775816426403934613447333272912881744u128, f21: 76226415949830531741703331500963753827u128, f22: 39818987148463290154023705547098975773u128, f23: 752527138646628024187522218718580494u128, f24: 126257787084817754195514096142117481248u128, f25: 194389006404874824774548496616347947362u128, f26: 279001747494769u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c9: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }}",
"address": "aleo18kstmx5l07vkks6prg9r37vffayvucqdzjwvk8sngp7540q06ugs9cw66m",
"encodedPositions": {
"data": {
"Pos": 2,
"Len": 1
},
"timestamp": {
"Pos": 3,
"Len": 1
},
"statusCode": {
"Pos": 4,
"Len": 1
},
"method": {
"Pos": 11,
"Len": 1
},
"responseFormat": {
"Pos": 10,
"Len": 1
},
"url": {
"Pos": 5,
"Len": 4
},
"selector": {
"Pos": 9,
"Len": 1
},
"encodingOptions": {
"Pos": 12,
"Len": 1
},
"requestHeaders": {
"Pos": 13,
"Len": 1
},
"optionalFields": {
"Pos": 14,
"Len": 4
}
},
"encodedRequest": "{ c0: { f0: 83077145937816122806495900722528270u128, f1: 4194320u128, f2: 0u128, f3: 0u128, f4: 200u128, f5: 63041935364884317995582503489240658017u128, f6: 152114491104286018974290347557927874657u128, f7: 110768634480232840853030308057786442601u128, f8: 17220u128, f9: 435459551856u128, f10: 0u128, f11: 5522759u128, f12: 147573952589676412930u128, f13: 0u128, f14: 55340232221128654848u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c1: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c2: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c3: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c4: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c5: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c6: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }, c7: { f0: 0u128, f1: 0u128, f2: 0u128, f3: 0u128, f4: 0u128, f5: 0u128, f6: 0u128, f7: 0u128, f8: 0u128, f9: 0u128, f10: 0u128, f11: 0u128, f12: 0u128, f13: 0u128, f14: 0u128, f15: 0u128, f16: 0u128, f17: 0u128, f18: 0u128, f19: 0u128, f20: 0u128, f21: 0u128, f22: 0u128, f23: 0u128, f24: 0u128, f25: 0u128, f26: 0u128, f27: 0u128, f28: 0u128, f29: 0u128, f30: 0u128, f31: 0u128 }}",
"requestHash": "76125894395663635970945341199889079275u128",
"timestampedRequestHash": "259266237802978767845358285625628727902u128",
"reportExtras": {
"pcr0Pos": "{ block_index: 6u8, shift_a: 64u8, shift_b: 64u8, mask_a: 340282366920938463444927863358058659840u128, mask_b: 18446744073709551615u128 }",
"pcr1Pos": "{ block_index: 9u8, shift_a: 88u8, shift_b: 40u8, mask_a: 340282366920628978453553262363043430400u128, mask_b: 309485009821345068724781055u128 }",
"pcr2Pos": "{ block_index: 12u8, shift_a: 112u8, shift_b: 16u8, mask_a: 340277174624079928635746076935438991360u128, mask_b: 5192296858534827628530496329220095u128 }",
"userDataPos": "{ block_index: 16u8, shift_a: 96u8, shift_b: 32u8, mask_a: 340282366841710300949110269838224261120u128, mask_b: 79228162514264337593543950335u128 }"
}
},
"attestationRequest": {
"url": "api.binance.com/api/v3/ticker/price?symbol=BTCUSDC",
"requestMethod": "GET",
"selector": "price",
"responseFormat": "json",
"encodingOptions": {
"value": "float",
"precision": 8
}
}
}
For a developer, the most interesting parts of the response will be the Attestation Data and Oracle Data.
Attestation Data is the data that was extracted, attested and verified. You can use it in your Web2.0 app however you please. It will always be a string in the response, as seen in the raw HTTP notarization response from the attestation target.
Oracle Data is an object that contains everything you need to use Attestation Data in an Aleo program.
About encoding data for Aleo#
In order to verify the Attestation Report about the data we needed a way to represent the Attestation Request and attestation results in Aleo programs and classic programming languages. The Attestation results consist of Attestation Data, response status code, and attestation timestamp. From now on, the Attestation Request + Attestation results combination will be called Report Data.
userData and Report Data
The report data is called userData
in the SDK response! See OracleData.userData
in JS SDK and OracleData.UserData
in Go SDK.
report
OracleData.report
is the attestationReport
but Aleo encoded as it is.
The Aleo program that uses it should be able to hash it and make asserts on certain properties while also taking the least amount of space.
Below is a type that is used in Aleo programs for using Report Data. It's called ReportData
and it consists of eight 512-byte data chunks.
Leo definition of ReportData
The notarization backend serializes the Report Data to bytes. It follows a defined order of serializing properties, using our own custom serializing method.
Then all useful properties are padded and aligned in a certain way so that they can be encoded into Aleo u128
s where a property occupies at least one u128
.
It means that a program will be able to use the properties of Report Data by accessing them using chunk and property numbers, e.g. ReportData.c0.f2
-
the first chunk, the third property.
To help you find the positions of the different properties, the Report Data in the SDK will contain positional information in AttestationResponse.oracleData.encodedPositions
. In our example, the Attestation Data in Aleo will
be in ReportData.c0.f2
.
Position of Attestation Data
See the encoding documentation for the explanation of why it's in the third property of the first chunk.
Depending on encoding options, the Attestation Data can take more than one property
The Oracle supports serializing Attestation Data into the Aleo compatible format in the following 3 ways:
- as a string
- as an integer
- as a floating point number
Attestation Data as a string#
To serialize and encode Attestation Data as a string for Aleo, you set AttestationRequest.encodingOptions.value
to string
.
Since Aleo does not support strings at the moment of development of the SDK, strings are serialized to bytes, split into chunks of 16 bytes,
then encoded into one or more 16-byte numbers - Aleo's u128
.
Encoding a string shorter than 16 bytes
Attestation Data: "Hello, world!"
Bytes: 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21
The bytes are padded with 0 to 16: 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 00 00 00
Interpreting the byte array as little endian representation of a 16-byte number: 2645608968347327576478451524936
ReportData.c0.f2
will be 2645608968347327576478451524936u128
Encoding a string longer than 16 bytes
Attestation Data: "Your balance: 1000000BTC"
Bytes: 59 6f 75 72 20 62 61 6c 61 6e 63 65 3a 20 31 30 30 30 30 30 30 42 54 43
The bytes are padded with 0 to 16: 59 6f 75 72 20 62 61 6c 61 6e 63 65 3a 20 31 30 30 30 30 30 30 42 54 43 00 00 00 00 00 00 00 00
Interpreting the byte array as little endian representation of two 16-byte numbers: 64058020007463102039520502111813332825 4851575473319194672
ReportData.c0.f2
will be 64058020007463102039520502111813332825u128
.
ReportData.c0.f3
will be 4851575473319194672u128
.
Let's now look into using this encoded string in an Aleo program.
You can make assertions on single bytes, part of the string, or the whole string.
For the sake of simplicity, the following examples will not use the ReportData
struct just yet.
Make assertions on the whole string
It's as simple as comparing two numbers.
As input we will use the "Hello, world!"
string encoded to 2645608968347327576478451524936u128
.
$ leo run main 64058020007463102039520502111813332825u128 4851575473319194672u128
Leo ✅ Compiled 'main.leo' into Aleo instructions
Output true in 'encoded_string_example.aleo' is a literal, ensure this is intended
⛓ Constraints
• 'encoded_string_example.aleo/main' - 6 constraints (called 1 time)
➡️ Output
• true
Leo ✅ Finished 'encoded_string_example.aleo/main'
Make asserts on single bytes
As input we will use the "Hello, world!"
string encoded to 2645608968347327576478451524936u128
.
$ leo run main 2645608968347327576478451524936u128
Leo ✅ Compiled 'main.leo' into Aleo instructions
Output true in 'encoded_string_example.aleo' is a literal, ensure this is intended
⛓ Constraints
• 'encoded_string_example.aleo/main' - 3 constraints (called 1 time)
➡️ Output
• true
Leo ✅ Finished 'encoded_string_example.aleo/main'
Make asserts on a part of the text
For this example we will need to reconstruct a part of the string, then make it match the length of the input string, and use zeroes in place of the characters we are not interested in.
Let's try to prove that the string "Your balance: 1000000BTC"
contains the substring "1000000"
. In this case we were unlucky because
the string we want is split between two u128
s.
u128
-59 6f 75 72 20 62 61 6c 61 6e 63 65 3a 20 31 30
-64058020007463102039520502111813332825u128
.u128
-30 30 30 30 30 42 54 43 00 00 00 00 00 00 00 00
-4851575473319194672u128
.
We're interested in the bytes highlighted in bold.
We will construct 2 numbers that have those bytes in the same positions:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 31 30
-64057366343744168453180733213588324352u128
30 30 30 30 30 00 00 00 00 00 00 00 00 00 00 00
-206966894640u128
This is how we could use it in Leo
$ leo run main 64058020007463102039520502111813332825u128 4851575473319194672u128
Leo ✅ Compiled 'main.leo' into Aleo instructions
Output true in 'encoded_string_example.aleo' is a literal, ensure this is intended
⛓ Constraints
• 'encoded_string_example.aleo/main' - 6 constraints (called 1 time)
➡️ Output
• true
Leo ✅ Finished 'encoded_string_example.aleo/main'
Attestation Data as an integer#
To serialize and encode Attestation Data for Aleo as an unsigned integer up to 64 bits in size, you set AttestationRequest.encodingOptions.value
to int
.
Attestation data is a string containing the integer value, which is parsed and encoded as an integer.
To give a more specific example, if the Attestation Data is a number "42", we want our Aleo program to be able to assert it as ReportData.c0.f2 == 42u128
.
As a developer you don't need to do anything. When our notarization backend prepares the AttestationResponse.oracleData.userData
that you see in the SDK response, it serializes the number as bytes in little-endian order and pads them to 16. Then the encoder turns those bytes into Aleo's u128
,
which produces the same number you have in the SDK response.
Example
SDK's example attestation response, where the irrelevant for this example properties were omitted:
[{
"attestationData": "42"
"attestationRequest": {
"encodingOptions": {
"value": "int",
}
}
"oracleData": {
"userData": "{ c0: { f0: 83078176003060725451284209119789060u128, f1: 4194512u128, f2: 42u128, f3: 1709730029u128, ..."
}
}]
If you look at userData
, you'll see that the encoded Attestation Data in c0.f2
is 42u128
.
It makes it very easy to use in Aleo programs.
AttestationData as a floating point number#
To serialize and encode Attestation Data for Aleo as a float up to 64 bits in size, you set AttestationRequest.encodingOptions.value
to float
. This is the only encoding option where you also need to provide desired precision. See the Guide to encoding options.
Not all floats can be encoded to an Aleo-compatible format at the moment.
The encoder implementation requires that the encoded value could be decoded to exactly the same floating point string as it was in the original Attestation Response.
When the backend encodes a floating point number, it first multiplies it by 10precision
to get rid of the fractional part,
then it works the same as the integer encoding.
Let's take a look at our weather example again
Example
SDK's example attestation response for the weather, where the irrelevant for this example properties were omitted:
[{
"attestationData": "9.90"
"attestationRequest": {
"encodingOptions": {
"value": "float",
"precision": 2
}
}
"oracleData": {
"userData": "{ c0: { f0: 83078176003060725451284209119789060u128, f1: 4194512u128, f2: 990u128, f3: 1709730029u128, ..."
}
}]
With precision 2, the 9.90
is encoded as 990u128
. With precision 4, the 9.90
is encoded as 99000u128
. With precision 1, the 9.90
is encoded as 99u128
etc.
About Attestation Report#
An Attestation Report is a report document about some data. The document is signed by the TEE enclave, and it contains additional information about the enclave such as enclave measurements, signatures, security information, etc.
Verifying the Attestation Report provides assurances that the enclave is running a specific version of source code, with some specific configuration. In case of Intel SGX, the Intel corporation acts as a security collateral. They also provide a list of combinations of software and hardware and their security level. In case of Amazon Nitro, Amazon acts as a security collateral.
In the SDK's response, the Attestation Report is encoded in the attestationReport
using Base64 encoding. This report is verified by the verification backend during the SDK's
notarize()
procedure. The verification backend makes assertions on the enclave measurements during the verification - it uses the reproducibility of the enclave build process to find the expected enclave measurements and compare them to the ones encoded in the report.
The Attestation Report can include up to 64 bytes of user data. In our case, the data is 16 bytes of Aleo's Poseidon8 hash of serialized and formatted Report Data.
The Attestation Report is an array of bytes that doesn't need serialization but it still needs to be formatted into a type compatible with Aleo.
We are reusing the DataChunk
type from the beginning of this page and define the Attestation Report as Report
.
The SGX and Nitro attestation reports have different structure and encoded content. Below we will take a look at what's inside.
SGX#
The 64 bytes of user data in the Report will be located in Report.c0.f24
, Report.c0.f25
, Report.c0.f26
, and Report.c0.f27
. The Poseidon8 hash of the Report Data is
only 16 bytes - one u128
.
Here are some more enclave flags and properties you can use:
report.c0.f4
- CPU security versionreport.c0.f6
- enclave extended product IDreport.c0.f7
- enclave attributes - a bitmask:assert_eq(report.c0.f7 & 1u128, 1u128)
- assert that the enclave was initializedassert_eq(report.c0.f7 & 2u128, 0u128)
- assert that the enclave is not in debug modeassert_eq(report.c0.f7 & 4u128, 4u128)
- assert that the enclave is in 64-bit mode
report.c0.f8
,report.c0.f9
- enclave's unique IDreport.c0.12
,report.c0.f13
- enclave's signer IDreport.c0.f20
- 2 bytes of product ID + 2 bytes of security version + 2 bytes of config security version + 10 bytes of zerosreport.c0.f23
- enclave family IDreport.c0.f24
-c0.f27
- 4u128
(64 bytes) of report data
See Open Enclave SDK headers for SGX for more flags.
See Intel SGX and Open Enclave official documentation for more information.
Nitro#
A Nitro attestation report is not fixed in length, which makes it more complicated to use in Aleo. Since the size is not fixed, the report values we may need to verify in a program may
not align with the u128
type. Instead, the value could start in one u128
and end in the next one.
The notarization backend helps with that by parsing the report for us and providing some helpful information on parsing and extracting the important data.
You will find this information in the AttestationResponse.oracleData.reportExtras
property:
Example
The irrelevant for this example properties were omitted.
It contains Aleo-encoded structs containing that extraction information for PCRs 0-2 and the Poseidon8 hash of the Report Data.
The Aleo type declaration for those structs looks like this
The struct contains the index of the u128
where the value begins and bitwise shifts and masks for the two u128
so that the following operation results in the desired value:
value = ((a & mask_a) >>> shift_a) | ((b & mask_b) <<< shift_b)
, where a
is the u128
at the provided index, and b
is the value at index block_index + 1
.
The position data for the PCR and Report Data Hash values must be submitted to the oracle along with the the report data, the report, the signature, and the public key.
The PCR values will always be in the chunk 0, and the User Data in the chunk 8.
Selecting 16 bytes of Report Data Hash from a Report chunk using PositionData
Extracting PCR values is similar but requires more steps. Every PCR value is 48 bytes long, which means that we need to extract three u128
s. It also means that we need four u128
s to extract
three u128
that could be offset.
Selecting 48 bytes of a PCR value from a Report chunk using PositionData
Verifying Attestation Report signature#
The enclave Attestation Report from Intel SGX contains an ECDSA signature. At the moment Aleo doesn't support ECDSA signatures, and uses Schnorr instead.
To work around that, the backend will be generating an Aleo private key on startup. This key is then used to sign the whole Attestation Report after it is serialized and encoded for Aleo.
That way, the signature can be verified in an Aleo program.
In our weather attestation example you can find the signature in AttestationResponse.oracleData.signature
. The public key of the key that created the signature can be found in AttestationResponse.oracleData.address
.
Example
SDK's example attestation response for the weather, where the irrelevant for this example properties were omitted:
[
{
"timestamp": 1709730029,
"oracleData": {
"signature": "sign1x2kx7gssjd9a5davpazug4mj5k82634q5n4cha03akp734cwgsqwhrm4rfxpd4h6fpkz253v9yqp00s9fqpgpyfafcdjk08sy4fhvpps9fyug6x7nlr2ws0209uhsps4dv9g6998qnhc2g6f6vw4pug7qmefrdv65eg2d6v2lq2r5ezldy9rfgw2xrauwzfms3d5r793ldzsyjag5g2",
"address": "aleo1jpz58re8eydtcmxr3s2gdp4cdtumuyumnnvf2mmwq6shllkhusgqn53vja",
}
}
]
This brings us to a full example of verifying the Attestation Report and Report Data.
Example
About request hashes#
The oracle data contains an encoded request, its hash and a timestamped hash.
The Encoded Request is the same as the Report Data but with the Attestation Data and Attestation Timestamp zeroed out. Attestation Data and Timestamp are the only parts of Report Data that can be different every time you perform notarization. By zeroing out these 2 fields, we can create a constant Report Data, which is going to represent a request to the attestation target.
AttestationResponse.oracleData.encodedRequest
When an Aleo program is going to verify that a request was done using the correct parameters,
like URL, Request Body, Request Headers etc., it can take the Report Data provided, replace the Attestation Data
and the Timestamp with 0u128
, hash it and compare this hash with the expected request hash in the program.
This way we can be sure that the data comes from the desired source with the correct parameters.
The Encoded Request Hash is created using Aleo's Poseidon8 hash as u128
.
Using a Request Hash
Timestamped request hash#
A timestamped request hash combines the request hash with the attestation timestamp to uniquely identify a request that was done at a certain point in time. In order to calculate this hash, first you need to create a specific Aleo struct called TimestampedHash
which would combine the request hash of a desired request with the timestamp of attestation which you want to use. And then you can get the Poseidon8 hash of this struct to get the timestamped request hash:
Using a timestamped request hash
Then you can use the calculated timestamped request hash in order to query data from the oracle mappings. Here is more on how to query the oracle.