{ "name": "Reti", "structs": { "Constraints": [ { "name": "epochPayoutRoundsMin", "type": "uint64" }, { "name": "epochPayoutRoundsMax", "type": "uint64" }, { "name": "minPctToValidatorWFourDecimals", "type": "uint64" }, { "name": "maxPctToValidatorWFourDecimals", "type": "uint64" }, { "name": "minEntryStake", "type": "uint64" }, { "name": "maxAlgoPerPool", "type": "uint64" }, { "name": "maxAlgoPerValidator", "type": "uint64" }, { "name": "amtConsideredSaturated", "type": "uint64" }, { "name": "maxNodes", "type": "uint64" }, { "name": "maxPoolsPerNode", "type": "uint64" }, { "name": "maxStakersPerPool", "type": "uint64" } ], "MbrAmounts": [ { "name": "addValidatorMbr", "type": "uint64" }, { "name": "addPoolMbr", "type": "uint64" }, { "name": "poolInitMbr", "type": "uint64" }, { "name": "addStakerMbr", "type": "uint64" } ], "NodePoolAssignmentConfig": [ { "name": "nodes", "type": "(uint64[3])[8]" } ], "ValidatorConfig": [ { "name": "id", "type": "uint64" }, { "name": "owner", "type": "address" }, { "name": "manager", "type": "address" }, { "name": "nfdForInfo", "type": "uint64" }, { "name": "entryGatingType", "type": "uint8" }, { "name": "entryGatingAddress", "type": "address" }, { "name": "entryGatingAssets", "type": "uint64[4]" }, { "name": "gatingAssetMinBalance", "type": "uint64" }, { "name": "rewardTokenId", "type": "uint64" }, { "name": "rewardPerPayout", "type": "uint64" }, { "name": "epochRoundLength", "type": "uint32" }, { "name": "percentToValidator", "type": "uint32" }, { "name": "validatorCommissionAddress", "type": "address" }, { "name": "minEntryStake", "type": "uint64" }, { "name": "maxAlgoPerPool", "type": "uint64" }, { "name": "poolsPerNode", "type": "uint8" }, { "name": "sunsettingOn", "type": "uint64" }, { "name": "sunsettingTo", "type": "uint64" } ], "ValidatorCurState": [ { "name": "numPools", "type": "uint16" }, { "name": "totalStakers", "type": "uint64" }, { "name": "totalAlgoStaked", "type": "uint64" }, { "name": "rewardTokenHeldBack", "type": "uint64" } ] }, "methods": [ { "name": "getValidatorConfig", "args": [ { "type": "uint64", "name": "validatorId" } ], "returns": { "type": "(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)", "struct": "ValidatorConfig" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "getValidatorState", "args": [ { "type": "uint64", "name": "validatorId" } ], "returns": { "type": "(uint16,uint64,uint64,uint64)", "struct": "ValidatorCurState" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "getPools", "args": [ { "type": "uint64", "name": "validatorId" } ], "returns": { "type": "(uint64,uint16,uint64)[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "getNodePoolAssignments", "args": [ { "type": "uint64", "name": "validatorId" } ], "returns": { "type": "((uint64[3])[8])", "struct": "NodePoolAssignmentConfig" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "getMbrAmounts", "args": [], "returns": { "type": "(uint64,uint64,uint64,uint64)", "struct": "MbrAmounts" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "getProtocolConstraints", "args": [], "returns": { "type": "(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)", "struct": "Constraints" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": {}, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 12 ], "errorMessage": "OnCompletion must be NoOp" }, { "pc": [ 75 ], "errorMessage": "OnCompletion must be NoOp && can only call when creating" }, { "pc": [ 85, 93, 101, 109 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 66, 67, 86, 94, 102, 110 ], "errorMessage": "stub" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgOAogICAgLy8gc21hcnRfY29udHJhY3RzL3JldGkvY29udHJhY3QuYWxnby50czo5CiAgICAvLyBleHBvcnQgY2xhc3MgUmV0aSBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUAxMwogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBtdXN0IGJlIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQKICAgIHB1c2hieXRlc3MgMHg3NWFmZjYxZCAweDFmMmYwMTA5IDB4OTEwZTk0YWMgMHg3YmJiNmM4ZCAweDhhODcxNDJkIDB4ZDEzNjZjYzMgLy8gbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIsIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIiwgbWV0aG9kICJnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdIiwgbWV0aG9kICJnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pIiwgbWV0aG9kICJnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIsIG1ldGhvZCAiZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggZ2V0VmFsaWRhdG9yQ29uZmlnIGdldFZhbGlkYXRvclN0YXRlIGdldFBvb2xzIGdldE5vZGVQb29sQXNzaWdubWVudHMgbWFpbl9nZXRNYnJBbW91bnRzX3JvdXRlQDggbWFpbl9nZXRQcm90b2NvbENvbnN0cmFpbnRzX3JvdXRlQDkKICAgIGVycgoKbWFpbl9nZXRQcm90b2NvbENvbnN0cmFpbnRzX3JvdXRlQDk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcmV0aS9jb250cmFjdC5hbGdvLnRzOjM3CiAgICAvLyBlcnIoInN0dWIiKTsKICAgIGVyciAvLyBzdHViCgptYWluX2dldE1ickFtb3VudHNfcm91dGVAODoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZXRpL2NvbnRyYWN0LmFsZ28udHM6MzIKICAgIC8vIGVycigic3R1YiIpOwogICAgZXJyIC8vIHN0dWIKCm1haW5fX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlQDEzOgogICAgLy8gc21hcnRfY29udHJhY3RzL3JldGkvY29udHJhY3QuYWxnby50czo5CiAgICAvLyBleHBvcnQgY2xhc3MgUmV0aSBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAhCiAgICAmJgogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBtdXN0IGJlIE5vT3AgJiYgY2FuIG9ubHkgY2FsbCB3aGVuIGNyZWF0aW5nCiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzL3JldGkvY29udHJhY3QuYWxnby50czo6UmV0aS5nZXRWYWxpZGF0b3JDb25maWdbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRWYWxpZGF0b3JDb25maWc6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcmV0aS9jb250cmFjdC5hbGdvLnRzOjEwCiAgICAvLyBAYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcmV0aS9jb250cmFjdC5hbGdvLnRzOjEyCiAgICAvLyBlcnIoInN0dWIiKTsKICAgIGVyciAvLyBzdHViCgoKLy8gc21hcnRfY29udHJhY3RzL3JldGkvY29udHJhY3QuYWxnby50czo6UmV0aS5nZXRWYWxpZGF0b3JTdGF0ZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmdldFZhbGlkYXRvclN0YXRlOgogICAgLy8gc21hcnRfY29udHJhY3RzL3JldGkvY29udHJhY3QuYWxnby50czoxNQogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgLy8gc21hcnRfY29udHJhY3RzL3JldGkvY29udHJhY3QuYWxnby50czoxNwogICAgLy8gZXJyKCJzdHViIik7CiAgICBlcnIgLy8gc3R1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9yZXRpL2NvbnRyYWN0LmFsZ28udHM6OlJldGkuZ2V0UG9vbHNbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRQb29sczoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZXRpL2NvbnRyYWN0LmFsZ28udHM6MjAKICAgIC8vIEBhYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9yZXRpL2NvbnRyYWN0LmFsZ28udHM6MjIKICAgIC8vIGVycigic3R1YiIpOwogICAgZXJyIC8vIHN0dWIKCgovLyBzbWFydF9jb250cmFjdHMvcmV0aS9jb250cmFjdC5hbGdvLnRzOjpSZXRpLmdldE5vZGVQb29sQXNzaWdubWVudHNbcm91dGluZ10oKSAtPiB2b2lkOgpnZXROb2RlUG9vbEFzc2lnbm1lbnRzOgogICAgLy8gc21hcnRfY29udHJhY3RzL3JldGkvY29udHJhY3QuYWxnby50czoyNQogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgLy8gc21hcnRfY29udHJhY3RzL3JldGkvY29udHJhY3QuYWxnby50czoyNwogICAgLy8gZXJyKCJzdHViIik7CiAgICBlcnIgLy8gc3R1Ygo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyABCDEbQQA7MRkURDEYRIIGBHWv9h0EHy8BCQSRDpSsBHu7bI0EiocULQTRNmzDNhoAjgYADgAWAB4AJgACAAEAAAAxGRQxGBQQRIEBQzYaARUiEkQANhoBFSISRAA2GgEVIhJEADYaARUiEkQA", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 3, "patch": 2 } }, "events": [], "templateVariables": {} }