tx · 7iDDmQpGjNe612aCPhZJuHNE3SQoqGdCqZFrdRbtQ9Ca 3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr: -0.02300000 Waves 2023.09.07 12:28 [2744787] smart account 3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr > SELF 0.00000000 Waves
{ "type": 13, "id": "7iDDmQpGjNe612aCPhZJuHNE3SQoqGdCqZFrdRbtQ9Ca", "fee": 2300000, "feeAssetId": null, "timestamp": 1694078884034, "version": 2, "chainId": 84, "sender": "3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr", "senderPublicKey": "GFbasS3jufhZkK4xR7tdTjjnP8K33KvJFEDHRtxXDkaJ", "proofs": [ "BXTC1pU5h9orQtxWZRHyJ1sKW69pjaGceHd4fdUtXh12hP2DBseEgLKzc2QdYM4XTGdH2jkvkXWzEw22VRf4p5r" ], "script": "base64:BgLcFggCEgQKAggBEgcKBQgICAgBEgQKAggIEgUKAwgIARIECgIICBIDCgEBEgMKAQESBAoCCAgSBAoCCAQSABIDCgEBEgASBAoCCAgSBAoCCAgSBAoCCAgSABIECgIICBIDCgEIIglzZXBhcmF0b3IiDnBvb2xXZWlnaHRNdWx0Ig9tYXhEZXB0aERlZmF1bHQiFmZpbmFsaXphdGlvblN0YWdlVG90YWwiF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzIg5rZXlFcG9jaExlbmd0aCIRa2V5RXBvY2hMZW5ndGhOZXciFWtleUVwb2NoTGVuZ3RoQnlFcG9jaCIFZXBvY2giD2tleUN1cnJlbnRFcG9jaCILa2V5TWF4RGVwdGgiImtleVZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QiHWtleVZvdGluZ0VtaXNzaW9uUmF0ZUNvbnRyYWN0IhJrZXlGYWN0b3J5Q29udHJhY3QiE2tleUJvb3N0aW5nQ29udHJhY3QiEmtleVN0YWtpbmdDb250cmFjdCIUa2V5RmluYWxpemF0aW9uU3RhZ2UiC2tleU5leHRQb29sIgtrZXlOZXh0VXNlciIOa2V5U3RhcnRIZWlnaHQiEWtleUN1cnJlbnRFcG9jaFVpIhBrZXlTdGFydEhlaWdodFVpIh1rZXlGaW5hbGl6YXRpb25TaG91bGRCZUZvcmNlZCIVa2V5U3RhcnRIZWlnaHRCeUVwb2NoIgxrZXlGaW5hbGl6ZWQiCWtleUluTGlzdCIEcG9vbCILJHQwMTc4ODE4MjgiDWFtb3VudEFzc2V0SWQiDHByaWNlQXNzZXRJZCIHa2V5VXNlZCIHYWRkcmVzcyIHa2V5Vm90ZSILJHQwMjEwMjIxNDIiD2tleVZvdGluZ1Jlc3VsdCILJHQwMjMyNDIzNjQiFWtleVZvdGluZ1Jlc3VsdFN0YWtlZCIMbHBBc3NldElkU3RyIgxrZXlQb29sU2hhcmUiCyR0MDI2ODUyNzI1Ig1rZXlUb3RhbFZvdGVzIg9rZXlTdGFrZWRCeVVzZXIiDnVzZXJBZGRyZXNzU3RyIgd3cmFwRXJyIgNtc2ciCHRocm93RXJyIg5nZXRWYWx1ZU9yRmFpbCIDa2V5IgR0eXBlIgVlcnJvciIHJG1hdGNoMCIDc3RyIgNpbnQiDGdldFN0ck9yRmFpbCIBQCIMZ2V0SW50T3JGYWlsIgxwb29sVG9TdHJpbmciDHN0cmluZ1RvUG9vbCIFcGFydHMiD2ZhY3RvcnlDb250cmFjdCIaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAiDWtleUZhY3RvcnlDZmciFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsIgdmYWN0b3J5IhlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsIgpmYWN0b3J5Q2ZnIhZnZXRMcEFzc2V0QnlQb29sQXNzZXRzIh9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiKWtleU1hcHBpbmdQb29sQXNzZXRzVG9Qb29sQ29udHJhY3RBZGRyZXNzIhhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHIiF2ludGVybmFsUHJpY2VBc3NldElkU3RyIh9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0IhNwb29sQ29udHJhY3RBZGRyZXNzIhVhbW91bnRBc3NldEludGVybmFsSWQiFHByaWNlQXNzZXRJbnRlcm5hbElkIglscEFzc2V0SWQiGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbCILJHQwNTU2NTU2MDUiDXBvb2xzTGlzdE5hbWUiEGdldFZvdGVzTGlzdE5hbWUiCyR0MDU4MTk1ODU5IgtrZXlMaXN0SGVhZCIIbGlzdE5hbWUiBG1ldGEiC2tleUxpc3RTaXplIgtrZXlMaXN0UHJldiICaWQiC2tleUxpc3ROZXh0Igxjb250YWluc05vZGUiCmhlYWRPclVuaXQiCnByZXZPclVuaXQiCm5leHRPclVuaXQiEWluc2VydE5vZGVBY3Rpb25zIghsaXN0U2l6ZSIJY2hlY2tOb2RlIhFkZWxldGVOb2RlQWN0aW9ucyIWa2V5TWFuYWdlclZhdWx0QWRkcmVzcyITa2V5TWFuYWdlclB1YmxpY0tleSIcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcyIBcyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCITbWFuYWdlclZhdWx0QWRkcmVzcyIJaXNNYW5hZ2VyIgFpIgJwayILbXVzdE1hbmFnZXIiCG11c3RUaGlzIgt1c2VyQWRkcmVzcyIMdGFyZ2V0SGVpZ2h0Ihdib29zdGluZ0NvbnRyYWN0QWRkcmVzcyIfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdCIQYm9vc3RpbmdDb250cmFjdCIPc3Rha2luZ0NvbnRyYWN0IgtlcG9jaExlbmd0aCIGY2hlY2tzIg1pbkxpc3RBY3Rpb25zIhhjdXJyZW50RXBvY2hJc05vdERlZmluZWQiEnN0YXJ0SGVpZ2h0QWN0aW9ucyIGYW1vdW50IgtzdGFydEhlaWdodCIJZW5kSGVpZ2h0IhdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdCIEdXNlZCIEdm90ZSIKcG9vbFJlc3VsdCIKdG90YWxWb3RlcyITZ3d4QW1vdW50QXRFbmRUb3RhbCIJYXZhaWxhYmxlIgduZXdWb3RlIgp3eEVtaXNzaW9uIg12b3Rlc0xpc3ROYW1lIhB2b3Rlc0xpc3RBY3Rpb25zIg5uZXdFcG9jaExlbmd0aCILbmV3TWF4RGVwdGgiB3Bvb2xTdHIiC2NoZWNrQ2FsbGVyIg1lcG9jaFByZXZpb3VzIhNzdGFydEhlaWdodFByZXZpb3VzIhNlcG9jaExlbmd0aFByZXZpb3VzIhFlbmRIZWlnaHRQcmV2aW91cyIQY2hlY2tUYXJnZXRFcG9jaCINJHQwMTc4NjIxNzkwMiIbZ3d4QW1vdW50QXRFbmRUb3RhbFByZXZpb3VzIgx2b3RpbmdSZXN1bHQiDHZvdGVQcmV2aW91cyIadm90aW5nUmVzdWx0U3Rha2VkUHJldmlvdXMiDHN0YWtlZEJ5VXNlciIZdm90aW5nUmVzdWx0U3Rha2VkQWN0aW9ucyIHYWN0aW9ucyIFZm9yY2UiC3RhcmdldEVwb2NoIgxjdXJyZW50RXBvY2giDSR0MDIwMjU5MjAyOTkiBXNoYXJlIg9tb2RpZnlXZWlnaHRJbnYiEHBvb2xzTGlzdEFjdGlvbnMiDXByZXZpb3VzRXBvY2giCG5ld0Vwb2NoIhRuZXdFcG9jaExlbmd0aE9wdGlvbiIVbmV3RXBvY2hMZW5ndGhBY3Rpb25zIgpwb29sT3JVbml0Igp1c2VyT3JVbml0IgckbWF0Y2gxIgxwb29sc0hlYWRTdHIiDm5leHRVc2VyT3JVbml0IgR1c2VyIgRuZXh0Ig5wcm9jZXNzVm90ZUludiIObmV4dFBvb2xPclVuaXQiByRtYXRjaDIiCG5leHRVc2VyIgtuZXh0UG9vbFN0ciIBciIHY291bnRlciIadm90aW5nRW1pc3Npb25SYXRlQ29udHJhY3QiBnJlc3VsdCIDaW52IghtYXhEZXB0aCIWZmluYWxpemF0aW9uSW5Qcm9ncmVzcyIJZ3d4QW1vdW50IgFuIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXk+AAFhAgJfXwABYgCAwtcvAAFjAAoAAWQAAAABZQABAAFmCQC5CQIJAMwIAgICJXMJAMwIAgILZXBvY2hMZW5ndGgFA25pbAUBYQABZwkAuQkCCQDMCAICBCVzJXMJAMwIAgIQZXBvY2hMZW5ndGhfX25ldwUDbmlsBQFhAQFoAQFpCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtlcG9jaExlbmd0aAkAzAgCCQCkAwEFAWkFA25pbAUBYQABagkAuQkCCQDMCAICAiVzCQDMCAICDGN1cnJlbnRFcG9jaAUDbmlsBQFhAAFrCQC5CQIJAMwIAgICJXMJAMwIAgIIbWF4RGVwdGgFA25pbAUBYQABbAkAuQkCCQDMCAICAiVzCQDMCAICH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QFA25pbAUBYQABbQkAuQkCCQDMCAICAiVzCQDMCAICGnZvdGluZ0VtaXNzaW9uUmF0ZUNvbnRyYWN0BQNuaWwFAWEAAW4JALkJAgkAzAgCAgIlcwkAzAgCAg9mYWN0b3J5Q29udHJhY3QFA25pbAUBYQABbwkAuQkCCQDMCAICAiVzCQDMCAICEGJvb3N0aW5nQ29udHJhY3QFA25pbAUBYQABcAkAuQkCCQDMCAICAiVzCQDMCAICD3N0YWtpbmdDb250cmFjdAUDbmlsBQFhAAFxCQC5CQIJAMwIAgICJXMJAMwIAgIRZmluYWxpemF0aW9uU3RhZ2UFA25pbAUBYQABcgkAuQkCCQDMCAICAiVzCQDMCAICCG5leHRQb29sBQNuaWwFAWEAAXMJALkJAgkAzAgCAgIlcwkAzAgCAghuZXh0VXNlcgUDbmlsBQFhAAF0CQC5CQIJAMwIAgICJXMJAMwIAgILc3RhcnRIZWlnaHQFA25pbAUBYQABdQkAuQkCCQDMCAICAiVzCQDMCAICDmN1cnJlbnRFcG9jaFVpBQNuaWwFAWEAAXYJALkJAgkAzAgCAgIlcwkAzAgCAg1zdGFydEhlaWdodFVpBQNuaWwFAWEAAXcJALkJAgkAzAgCAgIlcwkAzAgCAgVmb3JjZQUDbmlsBQFhAQF4AQFpCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtzdGFydEhlaWdodAkAzAgCCQCkAwEFAWkFA25pbAUBYQEBeQEBaQkAuQkCCQDMCAICBCVzJWQJAMwIAgIJZmluYWxpemVkCQDMCAIJAKQDAQUBaQUDbmlsBQFhAQF6AQFBBAFCBQFBBAFDCAUBQgJfMQQBRAgFAUICXzIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIGaW5MaXN0CQDMCAIFAUMJAMwIAgUBRAUDbmlsBQFhAQFFAgFGAWkJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIEdXNlZAkAzAgCCQClCAEFAUYJAMwIAgkApAMBBQFpBQNuaWwFAWEBAUcDAUEBRgFpBAFIBQFBBAFDCAUBSAJfMQQBRAgFAUgCXzIJALkJAgkAzAgCAgolcyVzJXMlcyVkCQDMCAICBHZvdGUJAMwIAgUBQwkAzAgCBQFECQDMCAIJAKUIAQUBRgkAzAgCCQCkAwEFAWkFA25pbAUBYQEBSQIBQQFpBAFKBQFBBAFDCAUBSgJfMQQBRAgFAUoCXzIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAgx2b3RpbmdSZXN1bHQJAMwIAgUBQwkAzAgCBQFECQDMCAIJAKQDAQUBaQUDbmlsBQFhAQFLAgFMAWkJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgISdm90aW5nUmVzdWx0U3Rha2VkCQDMCAIFAUwJAMwIAgkApAMBBQFpBQNuaWwFAWEBAU0CAUEBaQQBTgUBQQQBQwgFAU4CXzEEAUQIBQFOAl8yCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgIJcG9vbFNoYXJlCQDMCAIFAUMJAMwIAgUBRAkAzAgCCQCkAwEFAWkFA25pbAUBYQEBTwEBaQkAuQkCCQDMCAICBCVzJWQJAMwIAgIKdG90YWxWb3RlcwkAzAgCCQCkAwEFAWkFA25pbAUBYQEBUAIBTAFRCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICBnN0YWtlZAkAzAgCBQFRCQDMCAIFAUwFA25pbAUBYQEBUgEBUwkAuQkCCQDMCAICFXZvdGluZ19lbWlzc2lvbi5yaWRlOgkAzAgCBQFTBQNuaWwCASABAVQBAVMJAAIBCQEBUgEFAVMBAVUDAUYBVgFXBAFYCQEBUgEJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUBRgkAzAgCAgEuCQDMCAIFAVYJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBAFZBQFXAwkAAQIFAVkCBlN0cmluZwQBWgUBWQkAnQgCBQFGBQFWAwkAAQIFAVkCA0ludAQCYWEFAVkJAJoIAgUBRgUBVgkBAVQBAhJpbnZhbGlkIGVudHJ5IHR5cGUFAVgBAmFiAgFGAVYKAAJhYwkBAVUDBQFGBQFWAgADCQABAgUCYWMCBlN0cmluZwUCYWMJAAIBCQCsAgIJAAMBBQJhYwIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAQJhZAIBRgFWCgACYWMJAQFVAwUBRgUBVgAAAwkAAQIFAmFjAgNJbnQFAmFjCQACAQkArAICCQADAQUCYWMCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYWUBAUEJAKwCAgkArAICCAUBQQJfMQUBYQgFAUECXzIBAmFmAQFaBAJhZwkAtQkCBQFaBQFhAwkAAAIJAJADAQUCYWcAAgkAlAoCCQCRAwIFAmFnAAAJAJEDAgUCYWcAAQkBAVQBAhNpbnZhbGlkIHBvb2wgc3RyaW5nAAJhaAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFiAgUEdGhpcwUBbgACYWkACgECYWoAAhElc19fZmFjdG9yeUNvbmZpZwECYWsBAmFsCQC1CQIJAQJhYgIFAmFsCQECYWoABQFhAQJhbQECYW4JARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYW4FAmFpAQJhbwIBQwFECgECYXABAmFxCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFxCgECYXICAmFzAmF0CQCsAgIJAKwCAgkArAIC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ZWxldGVFbnRyeQEJAQJhSwIFAmFGBQJhSgUDbmlsAwkBAiE9AgUCYU8FBHVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFFAQUCYUYJAQV2YWx1ZQEFAmFPCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhSwIFAmFGBQJhSgkAzAgCCQELRGVsZXRlRW50cnkBCQECYUkCBQJhRgkBBXZhbHVlAQUCYU8FA25pbAMJAQIhPQIFAmFOBQR1bml0CQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhSQIFAmFGBQJhSgkAzAgCCQELRGVsZXRlRW50cnkBCQECYUsCBQJhRgkBBXZhbHVlAQUCYU4FA25pbAMJAAACBQJhSgkBC3ZhbHVlT3JFbHNlAgUCYU0CAAkAzAgCCQELRGVsZXRlRW50cnkBCQECYUUBBQJhRgUDbmlsCQEBVAEJAKwCAgkArAICCQCsAgICDmludmFsaWQgbm9kZTogBQJhRgIBLgUCYUoBAmFUAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBAmFVAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAmFWAAQBWQkAoggBCQECYVQAAwkAAQIFAVkCBlN0cmluZwQCYVcFAVkJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFXBQR0aGlzAQJhWAAEAmFZCQECYVYABAFZCQCdCAIFAmFZCQECYVUAAwkAAQIFAVkCBlN0cmluZwQCYVcFAVkJANkEAQUCYVcDCQABAgUBWQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJhWgECYmEEAVkJAQJhWAADCQABAgUBWQIKQnl0ZVZlY3RvcgQCYmIFAVkJAAACCAUCYmEPY2FsbGVyUHVibGljS2V5BQJiYgMJAAECBQFZAgRVbml0CQAAAggFAmJhBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJiYwECYmEDCQECYVoBBQJiYQYJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAECYmQBAmJhAwkAAAIIBQJiYQZjYWxsZXIFBHRoaXMGCQACAQIRcGVybWlzc2lvbiBkZW5pZWQSAmJhARhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQCAmJlAmJmBAJiZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAQJhYgIFBHRoaXMFAW8JAQFSAQIhaW52YWxpZCBib29zdGluZyBjb250cmFjdCBhZGRyZXNzCQCUCgIFA25pbAoAAmFjCQD8BwQFAmJnAiBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQkAzAgCBQJiZQkAzAgCBQJiZgUDbmlsBQNuaWwDCQABAgUCYWMCA0ludAUCYWMJAAIBCQCsAgIJAAMBBQJhYwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AmJhAQtjb25zdHJ1Y3RvcgUCYWgCYmgCYmkCYmoCYmsEAmJsCQDMCAIJAQJiYwEFAmJhCQDMCAIDCQECIT0CCQCmCAEFAmFoBQR1bml0BgIgaW52YWxpZCBmYWN0b3J5IGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUCYmgFBHVuaXQGAjJpbnZhbGlkIHZvdGluZyBlbWlzc2lvbiBjYW5kaWRhdGUgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkBAiE9AgkApggBBQJiaQUEdW5pdAYCIWludmFsaWQgYm9vc3RpbmcgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkBAiE9AgkApggBBQJiagUEdW5pdAYCIGludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQBmAgUCYmsAAAYJAQFUAQIUaW52YWxpZCBlcG9jaCBsZW5ndGgFA25pbAMJAAACBQJibAUCYmwJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQFuBQJhaAkAzAgCCQELU3RyaW5nRW50cnkCBQFsBQJiaAkAzAgCCQELU3RyaW5nRW50cnkCBQFvBQJiaQkAzAgCCQELU3RyaW5nRW50cnkCBQFwBQJiagkAzAgCCQEMSW50ZWdlckVudHJ5AgUBZgUCYmsFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYQEGY3JlYXRlAgFDAUQEAmJsCQDMCAIDCQAAAgkA2AQBCAgFAmJhBmNhbGxlcgVieXRlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQFsAgAGCQECYmMBBQJiYQUDbmlsAwkAAAIFAmJsBQJibAQBQQkAlAoCBQFDBQFEBAJibQkAzggCCQDMCAIJAQxCb29sZWFuRW50cnkCCQEBegEFAUEGBQNuaWwJAQJhUAIFAmFCCQECYWUBBQFBBAJibgkAAAIJAJoIAgUEdGhpcwUBagUEdW5pdAQCYm8DBQJibgQBaQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFqBQFpCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBeAEFAWkFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF1BQFpCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF2BQZoZWlnaHQFA25pbAUDbmlsCQCUCgIJAM4IAgUCYm0FAmJvBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJhAQR2b3RlAwFDAUQCYnAEAUEJAJQKAgUBQwUBRAQBaQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFqAAAEAmJxCQECYWQCBQR0aGlzCQEBeAEFAWkEAmJrCQECYWQCBQR0aGlzBQFmBAJicgkAZAIFAmJxBQJiawQCYnMJAJoIAgUEdGhpcwUBcQQCYnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUUCCAUCYmEGY2FsbGVyBQFpAAAEAmJ1CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFHAwUBQQgFAmJhBmNhbGxlcgUBaQAABAJidgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBSQIFAUEFAWkAAAQCYncJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAU8BBQFpAAAEAmJ4CgACYWMJAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIJANgEAQgIBQJiYQZjYWxsZXIFYnl0ZXMJAMwIAgUCYnIFA25pbAUDbmlsAwkAAQIFAmFjAgNJbnQFAmFjCQACAQkArAICCQADAQUCYWMCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCYnkJAGUCBQJieAUCYnQEAmJ6CQBkAgUCYnUFAmJwBAJiQQkBAmF6AQUBQQQCYmwJAMwIAgMJAQIhPQIJAKAIAQkBAXoBBQFBBQR1bml0BgkBAVQBAg5pbnZhbGlkIGFzc2V0cwkAzAgCAwkAZgIFAmJyBQZoZWlnaHQGCQEBVAECDmludmFsaWQgaGVpZ2h0CQDMCAIDCQAAAgUCYnMFBHVuaXQGCQEBVAECGGZpbmFsaXphdGlvbiBpbiBwcm9ncmVzcwkAzAgCAwkAZgIFAmJ4AAAGCQEBVAECE3lvdSBkbyBub3QgaGF2ZSBnV1gJAMwIAgMDCQBmAgUCYnAAAAkAZwIFAmJ5BQJicAcGCQEBVAECDmludmFsaWQgYW1vdW50CQDMCAIDBQJiQQYJAQFUAQIdcG9vbCBoYXNuJ3QgV1hfRU1JU1NJT04gbGFiZWwFA25pbAMJAAACBQJibAUCYmwEAmJCCQECYUMBBQFBBAFRCQClCAEIBQJiYQZjYWxsZXIEAmJDAwkBAmFMAgUCYkIFAVEFA25pbAkBAmFQAgUCYkIFAVEJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBRQIIBQJiYQZjYWxsZXIFAWkJAGQCBQJidAUCYnAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFHAwUBQQgFAmJhBmNhbGxlcgUBaQUCYnoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFJAgUBQQUBaQkAZAIFAmJ2BQJicAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAU8BBQFpCQBkAgUCYncFAmJwBQNuaWwFAmJDBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJhAQpjYW5jZWxWb3RlAgFDAUQEAUEJAJQKAgUBQwUBRAQBaQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFqAAAEAmJxCQECYWQCBQR0aGlzCQEBeAEFAWkEAmJrCQECYWQCBQR0aGlzBQFmBAJicgkAZAIFAmJxBQJiawQCYnMJAJoIAgUEdGhpcwUBcQQCYnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUUCCAUCYmEGY2FsbGVyBQFpAAAEAmJ1CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFHAwUBQQgFAmJhBmNhbGxlcgUBaQAABAJidgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBSQIFAUEFAWkAAAQCYncJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAU8BBQFpAAAEAmJsCQDMCAIDCQECIT0CCQCgCAEJAQF6AQUBQQUEdW5pdAYJAQFUAQIOaW52YWxpZCBhc3NldHMJAMwIAgMJAGYCBQJicgUGaGVpZ2h0BgkBAVQBAg5pbnZhbGlkIGhlaWdodAkAzAgCAwkAAAIFAmJzBQR1bml0BgkBAVQBAhhmaW5hbGl6YXRpb24gaW4gcHJvZ3Jlc3MJAMwIAgMJAGYCBQJidQAABgkBAVQBAgdubyB2b3RlBQNuaWwDCQAAAgUCYmwFAmJsBAJiQgkBAmFDAQUBQQQBUQkApQgBCAUCYmEGY2FsbGVyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUUCCAUCYmEGY2FsbGVyBQFpCQCWAwEJAMwIAgkAZQIFAmJ0BQJidQkAzAgCAAAFA25pbAkAzAgCCQELRGVsZXRlRW50cnkBCQEBRwMFAUEIBQJiYQZjYWxsZXIFAWkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFJAgUBQQUBaQkAZQIFAmJ2BQJidQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAU8BBQFpCQBlAgUCYncFAmJ1BQNuaWwJAQJhUwIFAmJCBQFRBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJhAQ5zZXRFcG9jaExlbmd0aAECYkQEAmJsCQDMCAIJAQJiYwEFAmJhCQDMCAIDCQBmAgUCYkQAAAYJAQFUAQIUaW52YWxpZCBlcG9jaCBsZW5ndGgFA25pbAMJAAACBQJibAUCYmwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBZwUCYkQFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYQELc2V0TWF4RGVwdGgBAmJFBAJibAkAzAgCCQECYmMBBQJiYQkAzAgCAwkAZgIFAmJFAAAGCQEBVAECEWludmFsaWQgbWF4IGRlcHRoBQNuaWwDCQAAAgUCYmwFAmJsCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAWsFAmJFBQNuaWwFBHVuaXQJAAIB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BQFwBAJheQkBAmFvAgUBQwUBRAQCYkEJAQJhegEFAUEEAmJ3CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFPAQUCYlYAAAQCYk8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUkCBQFBBQJiVgAABAJiWQMDCQAAAgUCYncAAAYJAQEhAQUCYkEAAAkAawMFAmJPBQFiBQJidwQCYloJAPwHBAUCYWgCDG1vZGlmeVdlaWdodAkAzAgCBQJheQkAzAgCBQJiWQUDbmlsBQNuaWwDCQAAAgUCYloFAmJaBAJjYQMDBQJiQQYFAmJVBQNuaWwJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQEBegEFAUEFA25pbAkBAmFTAgUCYUIFAmJGCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAU0CBQFBBQJiVgUCYlkFA25pbAUCY2EHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJhAQ5maW5hbGl6ZUhlbHBlcgAEAmJVCQELdmFsdWVPckVsc2UCCQCgCAEFAXcHBAFpCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWoAAAQCY2IJAGUCBQFpAAEEAmJxCQECYWQCBQR0aGlzCQEBeAEFAWkEAmJrCQECYWQCBQR0aGlzBQFmBAJicgkAZAIFAmJxBQJiawQCYnMJAJoIAgUEdGhpcwUBcQMDAwkAZwIFBmhlaWdodAUCYnIJAAACBQJicwUEdW5pdAcJAQEhAQUCYlUHBAJjYwkAZAIFAWkAAQQCY2QJAJoIAgUEdGhpcwUBZwQCY2UEAVkFAmNkAwkAAQIFAVkCA0ludAQCYkQFAVkJAMwIAgkBDEludGVnZXJFbnRyeQIFAWYFAmJECQDMCAIJAQtEZWxldGVFbnRyeQEFAWcFA25pbAMJAAECBQFZAgRVbml0BQNuaWwJAAIBAgtNYXRjaCBlcnJvcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQF4AQUCY2MFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFqBQJjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcQUBZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAWgBBQFpBQJiawUDbmlsBQJjZQYDAwUCYlUJAAACBQJicwUEdW5pdAcJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcQUBZQUDbmlsBgMJAAACBQJicwUEdW5pdAkAlAoCBQNuaWwHAwkAAAIFAmJzBQFkBAJjZgkAoggBBQFyBAJjZwkAoggBBQFzBAFZBQJjZgMJAAECBQFZAgRVbml0BAJjaAkAoggBCQECYUUBBQJhQgMJAAECBQJjaAIEVW5pdAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFxBQFlCQDMCAIJAQtEZWxldGVFbnRyeQEFAXIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcwUDbmlsBgMJAAECBQJjaAIGU3RyaW5nBAJjaQUCY2gJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQFyBQJjaQUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFAVkCBlN0cmluZwQCYkYFAVkEAUEJAQJhZgEFAmJGBAJjagQCY2gFAmNnAwkAAQIFAmNoAgRVbml0CQCiCAEJAQJhRQEJAQJhQwEFAUEDCQABAgUCY2gCBlN0cmluZwQCY2sFAmNoBAJjbAkAoggBCQECYUsCCQECYUMBBQFBBQJjawMJAAACBQJjbAUCY2wEAmNtCQD8BwQFBHRoaXMCE3Byb2Nlc3NWb3RlSU5URVJOQUwJAMwIAgUCYkYJAMwIAgUCY2sFA25pbAUDbmlsAwkAAAIFAmNtBQJjbQUCY2wJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgQCY2gFAmNqAwkAAQIFAmNoAgRVbml0BAJjbgkAoggBCQECYUsCBQJhQgUCYkYEAmNvBQJjbgMJAAECBQJjbwIEVW5pdAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFxBQFlCQDMCAIJAQtEZWxldGVFbnRyeQEFAXIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcwUDbmlsBgMJAAECBQJjbwIGU3RyaW5nBAJhVwUCY28JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQFyBQJhVwkAzAgCCQELRGVsZXRlRW50cnkBBQFzBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUCY2gCBlN0cmluZwQCY3AFAmNoCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcwUCY3AFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgkAAgECC01hdGNoIGVycm9yAwkAAAIFAmJzBQFlBAJjZgkAoggBBQFyBAFZBQJjZgMJAAECBQFZAgRVbml0BAJjaAkAoggBCQECYUUBBQJhQgMJAAECBQJjaAIEVW5pdAQCYlQDBQJiVQkAzAgCCQELRGVsZXRlRW50cnkBBQFxCQDMCAIJAQtEZWxldGVFbnRyeQEFAXcFA25pbAkAzAgCCQELRGVsZXRlRW50cnkBBQFxCQDMCAIJAQxCb29sZWFuRW50cnkCCQEBeQEFAmNiBgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdQUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdgUCYnEFA25pbAkAlAoCBQJiVAYDCQABAgUCY2gCBlN0cmluZwQCY3EFAmNoCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcgUCY3EFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQFZAgZTdHJpbmcEAmJGBQFZBAJjbgkAoggBCQECYUsCBQJhQgUCYkYDCQAAAgUCY24FAmNuBAJjcgoAAmFjCQD8BwQFBHRoaXMCE3Byb2Nlc3NQb29sSU5URVJOQUwJAMwIAgUCYkYJAMwIAgUCYlUFA25pbAUDbmlsAwkAAQIFAmFjAgdCb29sZWFuBQJhYwkAAgEJAKwCAgkAAwEFAmFjAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFAmNyBQJjcgMFAmNyCQCUCgIFA25pbAYEAmNoBQJjbgMJAAECBQJjaAIEVW5pdAQCYlQDBQJiVQkAzAgCCQELRGVsZXRlRW50cnkBBQFxCQDMCAIJAQtEZWxldGVFbnRyeQEFAXcJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcgUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEFAXEJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQF5AQUCY2IGCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF1BQFpCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF2BQJicQkAzAgCCQELRGVsZXRlRW50cnkBBQFyBQNuaWwJAJQKAgUCYlQGAwkAAQIFAmNoAgZTdHJpbmcEAmNxBQJjaAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAXIFAmNxBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgkBAVQBAhZmaW5hbGl6YXRpb24gaXMgYnJva2VuAmJhAQ9maW5hbGl6ZVdyYXBwZXIBAmNzBAJjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUBbQQCY3UKAAJhYwkA/AcEBQR0aGlzAg5maW5hbGl6ZUhlbHBlcgUDbmlsBQNuaWwDCQABAgUCYWMCB0Jvb2xlYW4FAmFjCQACAQkArAICCQADAQUCYWMCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUCY3UFAmN1AwkBASEBBQJjdQMJAAACBQJjcwAACQEBVAECHkN1cnJlbnQgdm90aW5nIGlzIG5vdCBvdmVyIHlldAQCY3YJAPwHBAUCY3QCCGZpbmFsaXplBQNuaWwFA25pbAMJAAACBQJjdgUCY3YJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJjdwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFrBQFjAwkAZgIFAmN3BQJjcwQCY3YJAPwHBAUEdGhpcwIPZmluYWxpemVXcmFwcGVyCQDMCAIJAGQCBQJjcwABBQNuaWwFA25pbAMJAAACBQJjdgUCY3YJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYQEIZmluYWxpemUABAJjdgkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgAABQNuaWwFA25pbAMJAAACBQJjdgUCY3YJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJhARRjb250YWluc05vZGVSRUFET05MWQICYUYCYUoJAJQKAgUDbmlsCQECYUwCBQJhRgUCYUoCYmEBCmluc2VydE5vZGUCAmFGAmFKBAJiRwkBAmJjAQUCYmEDCQAAAgUCYkcFAmJHCQCUCgIJAQJhUAIFAmFGBQJhSgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYQEKZGVsZXRlTm9kZQICYUYCYUoEAmJHCQECYmMBBQJiYQMJAAACBQJiRwUCYkcJAJQKAgkBAmFTAgUCYUYFAmFKBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJhARhpc0ZpbmFsaXphdGlvbkluUHJvZ3Jlc3MABAJicwkAmggCBQR0aGlzBQFxBAJjeAkBAiE9AgUCYnMFBHVuaXQJAJQKAgUDbmlsBQJjeAJiYQEKZGVsZXRlUG9vbAIBQwFEBAJiRwMDCQAAAggFAmJhBmNhbGxlcgUCYWgGCQECYmMBBQJiYQYJAQFUAQIRUGVybWlzc2lvbiBkZW5pZWQDCQAAAgUCYkcFAmJHBAJhRgIFcG9vbHMEAUEJAJQKAgUBQwUBRAQCYUoJALkJAgkAzAgCBQFDCQDMCAIFAUQFA25pbAUBYQQCYlQDCQECYUwCBQJhRgUCYUoJAQJhUwIFAmFGBQJhSgUDbmlsCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAXoBBQFBBQNuaWwFAmJUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJhARJnZXRMb2NrZWRHd3hBbW91bnQBAVEEAmJlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUBUQkBAVIBAhRpbnZhbGlkIHVzZXIgYWRkcmVzcwQBaQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFqAAAEAmN5BAFZCQCaCAIFBHRoaXMJAQFFAgUCYmUFAWkDCQABAgUBWQIEVW5pdAAAAwkAAQIFAVkCA0ludAQCY3oFAVkFAmN6CQACAQILTWF0Y2ggZXJyb3IJAJQKAgUDbmlsBQJjeQECY0EBAmNCAAQCY0MEAVkJAQJhWAADCQABAgUBWQIKQnl0ZVZlY3RvcgQCYmIFAVkFAmJiAwkAAQIFAVkCBFVuaXQIBQJjQQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCY0EJYm9keUJ5dGVzCQCRAwIIBQJjQQZwcm9vZnMAAAUCY0Ntk8qj", "height": 2744787, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FRCajPuTxvXbBg91L5VZtWSXicaY1zvBVYTGPAV18Nsz Next: 6ERM7wMWvxs3puTqwemm9a6mNzznRajbSCWiFEang9N4 Diff:
Old | New | Differences | |
---|---|---|---|
187 | 187 | } | |
188 | 188 | ||
189 | 189 | ||
190 | - | func aB () = { | |
191 | - | let an = ak(ah) | |
192 | - | let aC = am(an) | |
193 | - | invoke(aC, "deposit", nil, nil) | |
194 | - | } | |
190 | + | let aB = "pools" | |
195 | 191 | ||
196 | - | ||
197 | - | let aD = "pools" | |
198 | - | ||
199 | - | func aE (A) = { | |
200 | - | let aF = A | |
201 | - | let C = aF._1 | |
202 | - | let D = aF._2 | |
192 | + | func aC (A) = { | |
193 | + | let aD = A | |
194 | + | let C = aD._1 | |
195 | + | let D = aD._2 | |
203 | 196 | makeString(["votes", C, D], a) | |
204 | 197 | } | |
205 | 198 | ||
206 | 199 | ||
207 | - | func | |
208 | - | let | |
200 | + | func aE (aF) = { | |
201 | + | let aG = if ((aF == aB)) | |
209 | 202 | then "%s%s" | |
210 | 203 | else "%s%s%s%s" | |
211 | - | makeString([ | |
204 | + | makeString([aG, aF, "head"], a) | |
212 | 205 | } | |
213 | 206 | ||
214 | 207 | ||
215 | - | func | |
216 | - | let | |
208 | + | func aH (aF) = { | |
209 | + | let aG = if ((aF == aB)) | |
217 | 210 | then "%s%s" | |
218 | 211 | else "%s%s%s%s" | |
219 | - | makeString([ | |
212 | + | makeString([aG, aF, "size"], a) | |
220 | 213 | } | |
221 | 214 | ||
222 | 215 | ||
223 | - | func | |
224 | - | let | |
216 | + | func aI (aF,aJ) = { | |
217 | + | let aG = if ((aF == aB)) | |
225 | 218 | then "%s%s%s%s" | |
226 | 219 | else "%s%s%s%s%s" | |
227 | - | makeString([ | |
220 | + | makeString([aG, aF, aJ, "prev"], a) | |
228 | 221 | } | |
229 | 222 | ||
230 | 223 | ||
231 | - | func | |
232 | - | let | |
224 | + | func aK (aF,aJ) = { | |
225 | + | let aG = if ((aF == aB)) | |
233 | 226 | then "%s%s%s%s" | |
234 | 227 | else "%s%s%s%s%s" | |
235 | - | makeString([ | |
228 | + | makeString([aG, aF, aJ, "next"], a) | |
236 | 229 | } | |
237 | 230 | ||
238 | 231 | ||
239 | - | func | |
240 | - | let | |
241 | - | let | |
242 | - | let | |
243 | - | if (if (( | |
232 | + | func aL (aF,aJ) = { | |
233 | + | let aM = getString(this, aE(aF)) | |
234 | + | let aN = getString(this, aI(aF, aJ)) | |
235 | + | let aO = getString(this, aK(aF, aJ)) | |
236 | + | if (if ((aJ == valueOrElse(aM, ""))) | |
244 | 237 | then true | |
245 | - | else ( | |
238 | + | else (aN != unit)) | |
246 | 239 | then true | |
247 | - | else ( | |
240 | + | else (aO != unit) | |
248 | 241 | } | |
249 | 242 | ||
250 | 243 | ||
251 | - | func | |
252 | - | let | |
253 | - | let | |
254 | - | let | |
244 | + | func aP (aF,aJ) = { | |
245 | + | let aM = getString(this, aE(aF)) | |
246 | + | let aQ = valueOrElse(getInteger(this, aH(aF)), 0) | |
247 | + | let aR = if (!(aL(aF, aJ))) | |
255 | 248 | then true | |
256 | 249 | else T("Node exists") | |
257 | - | if (( | |
258 | - | then (([IntegerEntry( | |
259 | - | then [StringEntry( | |
260 | - | else nil)) ++ [StringEntry( | |
250 | + | if ((aR == aR)) | |
251 | + | then (([IntegerEntry(aH(aF), (aQ + 1))] ++ (if ((aM != unit)) | |
252 | + | then [StringEntry(aK(aF, aJ), value(aM)), StringEntry(aI(aF, value(aM)), aJ)] | |
253 | + | else nil)) ++ [StringEntry(aE(aF), aJ)]) | |
261 | 254 | else throw("Strict value is not equal to itself.") | |
262 | 255 | } | |
263 | 256 | ||
264 | 257 | ||
265 | - | func | |
266 | - | let | |
267 | - | let | |
268 | - | let | |
269 | - | let | |
270 | - | ([IntegerEntry( | |
271 | - | then ( | |
258 | + | func aS (aF,aJ) = { | |
259 | + | let aM = getString(this, aE(aF)) | |
260 | + | let aQ = valueOrElse(getInteger(this, aH(aF)), 0) | |
261 | + | let aN = getString(this, aI(aF, aJ)) | |
262 | + | let aO = getString(this, aK(aF, aJ)) | |
263 | + | ([IntegerEntry(aH(aF), (aQ - 1))] ++ (if (if ((aN != unit)) | |
264 | + | then (aO != unit) | |
272 | 265 | else false) | |
273 | - | then [StringEntry( | |
274 | - | else if (( | |
275 | - | then [StringEntry( | |
276 | - | else if (( | |
277 | - | then [DeleteEntry( | |
278 | - | else if (( | |
279 | - | then [DeleteEntry( | |
280 | - | else T(((("invalid node: " + | |
266 | + | then [StringEntry(aK(aF, value(aN)), value(aO)), StringEntry(aI(aF, value(aO)), value(aN)), DeleteEntry(aI(aF, aJ)), DeleteEntry(aK(aF, aJ))] | |
267 | + | else if ((aO != unit)) | |
268 | + | then [StringEntry(aE(aF), value(aO)), DeleteEntry(aK(aF, aJ)), DeleteEntry(aI(aF, value(aO)))] | |
269 | + | else if ((aN != unit)) | |
270 | + | then [DeleteEntry(aI(aF, aJ)), DeleteEntry(aK(aF, value(aN)))] | |
271 | + | else if ((aJ == valueOrElse(aM, ""))) | |
272 | + | then [DeleteEntry(aE(aF))] | |
273 | + | else T(((("invalid node: " + aF) + ".") + aJ)))) | |
281 | 274 | } | |
282 | 275 | ||
283 | 276 | ||
284 | - | func | |
277 | + | func aT () = "%s__managerVaultAddress" | |
285 | 278 | ||
286 | 279 | ||
287 | - | func | |
280 | + | func aU () = "%s__managerPublicKey" | |
288 | 281 | ||
289 | 282 | ||
290 | - | func | |
291 | - | let Y = getString( | |
283 | + | func aV () = { | |
284 | + | let Y = getString(aT()) | |
292 | 285 | if ($isInstanceOf(Y, "String")) | |
293 | 286 | then { | |
294 | - | let | |
295 | - | addressFromStringValue( | |
287 | + | let aW = Y | |
288 | + | addressFromStringValue(aW) | |
296 | 289 | } | |
297 | 290 | else this | |
298 | 291 | } | |
299 | 292 | ||
300 | 293 | ||
301 | - | func | |
302 | - | let | |
303 | - | let Y = getString( | |
294 | + | func aX () = { | |
295 | + | let aY = aV() | |
296 | + | let Y = getString(aY, aU()) | |
304 | 297 | if ($isInstanceOf(Y, "String")) | |
305 | 298 | then { | |
306 | - | let | |
307 | - | fromBase58String( | |
299 | + | let aW = Y | |
300 | + | fromBase58String(aW) | |
308 | 301 | } | |
309 | 302 | else if ($isInstanceOf(Y, "Unit")) | |
310 | 303 | then unit | |
312 | 305 | } | |
313 | 306 | ||
314 | 307 | ||
315 | - | func | |
316 | - | let Y = | |
308 | + | func aZ (ba) = { | |
309 | + | let Y = aX() | |
317 | 310 | if ($isInstanceOf(Y, "ByteVector")) | |
318 | 311 | then { | |
319 | - | let | |
320 | - | ( | |
312 | + | let bb = Y | |
313 | + | (ba.callerPublicKey == bb) | |
321 | 314 | } | |
322 | 315 | else if ($isInstanceOf(Y, "Unit")) | |
323 | - | then ( | |
316 | + | then (ba.caller == this) | |
324 | 317 | else throw("Match error") | |
325 | 318 | } | |
326 | 319 | ||
327 | 320 | ||
328 | - | func | |
321 | + | func bc (ba) = if (aZ(ba)) | |
329 | 322 | then true | |
330 | 323 | else throw("permission denied") | |
331 | 324 | ||
332 | 325 | ||
333 | - | func | |
326 | + | func bd (ba) = if ((ba.caller == this)) | |
334 | 327 | then true | |
335 | 328 | else throw("permission denied") | |
336 | 329 | ||
337 | 330 | ||
338 | - | @Callable( | |
339 | - | func getUserGwxAmountAtHeight ( | |
340 | - | let | |
331 | + | @Callable(ba) | |
332 | + | func getUserGwxAmountAtHeight (be,bf) = { | |
333 | + | let bg = valueOrErrorMessage(addressFromString(ab(this, o)), R("invalid boosting contract address")) | |
341 | 334 | $Tuple2(nil, { | |
342 | - | let ac = invoke( | |
335 | + | let ac = invoke(bg, "getUserGwxAmountAtHeightREADONLY", [be, bf], nil) | |
343 | 336 | if ($isInstanceOf(ac, "Int")) | |
344 | 337 | then ac | |
345 | 338 | else throw(($getType(ac) + " couldn't be cast to Int")) | |
348 | 341 | ||
349 | 342 | ||
350 | 343 | ||
351 | - | @Callable( | |
352 | - | func constructor (ah,bj,bk | |
353 | - | let | |
344 | + | @Callable(ba) | |
345 | + | func constructor (ah,bh,bi,bj,bk) = { | |
346 | + | let bl = [bc(ba), if ((addressFromString(ah) != unit)) | |
354 | 347 | then true | |
355 | - | else "invalid factory contract address", if ((addressFromString( | |
348 | + | else "invalid factory contract address", if ((addressFromString(bh) != unit)) | |
356 | 349 | then true | |
357 | - | else "invalid voting emission candidate contract address", if ((addressFromString( | |
350 | + | else "invalid voting emission candidate contract address", if ((addressFromString(bi) != unit)) | |
358 | 351 | then true | |
359 | - | else "invalid boosting contract address", if ((addressFromString( | |
352 | + | else "invalid boosting contract address", if ((addressFromString(bj) != unit)) | |
360 | 353 | then true | |
361 | - | else "invalid staking contract address", if (( | |
354 | + | else "invalid staking contract address", if ((bk > 0)) | |
362 | 355 | then true | |
363 | 356 | else T("invalid epoch length")] | |
364 | - | if (( | |
365 | - | then $Tuple2([StringEntry(n, ah), StringEntry(l, | |
357 | + | if ((bl == bl)) | |
358 | + | then $Tuple2([StringEntry(n, ah), StringEntry(l, bh), StringEntry(o, bi), StringEntry(p, bj), IntegerEntry(f, bk)], unit) | |
366 | 359 | else throw("Strict value is not equal to itself.") | |
367 | 360 | } | |
368 | 361 | ||
369 | 362 | ||
370 | 363 | ||
371 | - | @Callable( | |
364 | + | @Callable(ba) | |
372 | 365 | func create (C,D) = { | |
373 | - | let | |
366 | + | let bl = [if ((toBase58String(ba.caller.bytes) == valueOrElse(getString(this, l), ""))) | |
374 | 367 | then true | |
375 | - | else | |
376 | - | if (( | |
368 | + | else bc(ba)] | |
369 | + | if ((bl == bl)) | |
377 | 370 | then { | |
378 | 371 | let A = $Tuple2(C, D) | |
379 | - | let | |
380 | - | let | |
381 | - | let | |
372 | + | let bm = ([BooleanEntry(z(A), true)] ++ aP(aB, ae(A))) | |
373 | + | let bn = (getInteger(this, j) == unit) | |
374 | + | let bo = if (bn) | |
382 | 375 | then { | |
383 | 376 | let i = 0 | |
384 | 377 | [IntegerEntry(j, i), IntegerEntry(x(i), height), IntegerEntry(t, height), IntegerEntry(u, i), IntegerEntry(v, height)] | |
385 | 378 | } | |
386 | 379 | else nil | |
387 | - | $Tuple2(( | |
380 | + | $Tuple2((bm ++ bo), unit) | |
388 | 381 | } | |
389 | 382 | else throw("Strict value is not equal to itself.") | |
390 | 383 | } | |
391 | 384 | ||
392 | 385 | ||
393 | 386 | ||
394 | - | @Callable( | |
395 | - | func vote (C,D, | |
387 | + | @Callable(ba) | |
388 | + | func vote (C,D,bp) = { | |
396 | 389 | let A = $Tuple2(C, D) | |
397 | 390 | let i = valueOrElse(getInteger(this, j), 0) | |
398 | - | let | |
399 | - | let | |
400 | - | let | |
401 | - | let | |
402 | - | let | |
403 | - | let | |
404 | - | let | |
405 | - | let | |
406 | - | let | |
407 | - | let ac = invoke(this, "getUserGwxAmountAtHeight", [toBase58String( | |
391 | + | let bq = ad(this, x(i)) | |
392 | + | let bk = ad(this, f) | |
393 | + | let br = (bq + bk) | |
394 | + | let bs = getInteger(this, q) | |
395 | + | let bt = valueOrElse(getInteger(this, E(ba.caller, i)), 0) | |
396 | + | let bu = valueOrElse(getInteger(this, G(A, ba.caller, i)), 0) | |
397 | + | let bv = valueOrElse(getInteger(this, I(A, i)), 0) | |
398 | + | let bw = valueOrElse(getInteger(this, O(i)), 0) | |
399 | + | let bx = { | |
400 | + | let ac = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(ba.caller.bytes), br], nil) | |
408 | 401 | if ($isInstanceOf(ac, "Int")) | |
409 | 402 | then ac | |
410 | 403 | else throw(($getType(ac) + " couldn't be cast to Int")) | |
411 | 404 | } | |
412 | - | let | |
413 | - | let | |
414 | - | let | |
415 | - | let | |
405 | + | let by = (bx - bt) | |
406 | + | let bz = (bu + bp) | |
407 | + | let bA = az(A) | |
408 | + | let bl = [if ((getBoolean(z(A)) != unit)) | |
416 | 409 | then true | |
417 | - | else T("invalid assets"), if (( | |
410 | + | else T("invalid assets"), if ((br > height)) | |
418 | 411 | then true | |
419 | - | else T("invalid height"), if (( | |
412 | + | else T("invalid height"), if ((bs == unit)) | |
420 | 413 | then true | |
421 | - | else T("finalization in progress"), if (( | |
414 | + | else T("finalization in progress"), if ((bx > 0)) | |
422 | 415 | then true | |
423 | - | else T("you do not have gWX"), if (if (( | |
424 | - | then ( | |
416 | + | else T("you do not have gWX"), if (if ((bp > 0)) | |
417 | + | then (by >= bp) | |
425 | 418 | else false) | |
426 | 419 | then true | |
427 | - | else T("invalid amount"), if ( | |
420 | + | else T("invalid amount"), if (bA) | |
428 | 421 | then true | |
429 | 422 | else T("pool hasn't WX_EMISSION label")] | |
430 | - | if (( | |
423 | + | if ((bl == bl)) | |
431 | 424 | then { | |
432 | - | let | |
433 | - | let Q = toString( | |
434 | - | let | |
425 | + | let bB = aC(A) | |
426 | + | let Q = toString(ba.caller) | |
427 | + | let bC = if (aL(bB, Q)) | |
435 | 428 | then nil | |
436 | - | else | |
437 | - | $Tuple2(([IntegerEntry(E( | |
429 | + | else aP(bB, Q) | |
430 | + | $Tuple2(([IntegerEntry(E(ba.caller, i), (bt + bp)), IntegerEntry(G(A, ba.caller, i), bz), IntegerEntry(I(A, i), (bv + bp)), IntegerEntry(O(i), (bw + bp))] ++ bC), unit) | |
438 | 431 | } | |
439 | 432 | else throw("Strict value is not equal to itself.") | |
440 | 433 | } | |
441 | 434 | ||
442 | 435 | ||
443 | 436 | ||
444 | - | @Callable( | |
437 | + | @Callable(ba) | |
445 | 438 | func cancelVote (C,D) = { | |
446 | 439 | let A = $Tuple2(C, D) | |
447 | 440 | let i = valueOrElse(getInteger(this, j), 0) | |
448 | - | let | |
449 | - | let | |
450 | - | let | |
451 | - | let | |
452 | - | let | |
453 | - | let | |
454 | - | let | |
455 | - | let | |
456 | - | let | |
441 | + | let bq = ad(this, x(i)) | |
442 | + | let bk = ad(this, f) | |
443 | + | let br = (bq + bk) | |
444 | + | let bs = getInteger(this, q) | |
445 | + | let bt = valueOrElse(getInteger(this, E(ba.caller, i)), 0) | |
446 | + | let bu = valueOrElse(getInteger(this, G(A, ba.caller, i)), 0) | |
447 | + | let bv = valueOrElse(getInteger(this, I(A, i)), 0) | |
448 | + | let bw = valueOrElse(getInteger(this, O(i)), 0) | |
449 | + | let bl = [if ((getBoolean(z(A)) != unit)) | |
457 | 450 | then true | |
458 | - | else T("invalid assets"), if (( | |
451 | + | else T("invalid assets"), if ((br > height)) | |
459 | 452 | then true | |
460 | - | else T("invalid height"), if (( | |
453 | + | else T("invalid height"), if ((bs == unit)) | |
461 | 454 | then true | |
462 | - | else T("finalization in progress"), if (( | |
455 | + | else T("finalization in progress"), if ((bu > 0)) | |
463 | 456 | then true | |
464 | 457 | else T("no vote")] | |
465 | - | if (( | |
458 | + | if ((bl == bl)) | |
466 | 459 | then { | |
467 | - | let | |
468 | - | let Q = toString( | |
469 | - | $Tuple2(([IntegerEntry(E( | |
460 | + | let bB = aC(A) | |
461 | + | let Q = toString(ba.caller) | |
462 | + | $Tuple2(([IntegerEntry(E(ba.caller, i), max([(bt - bu), 0])), DeleteEntry(G(A, ba.caller, i)), IntegerEntry(I(A, i), (bv - bu)), IntegerEntry(O(i), (bw - bu))] ++ aS(bB, Q)), unit) | |
470 | 463 | } | |
471 | 464 | else throw("Strict value is not equal to itself.") | |
472 | 465 | } | |
473 | 466 | ||
474 | 467 | ||
475 | 468 | ||
476 | - | @Callable( | |
477 | - | func setEpochLength ( | |
478 | - | let | |
469 | + | @Callable(ba) | |
470 | + | func setEpochLength (bD) = { | |
471 | + | let bl = [bc(ba), if ((bD > 0)) | |
479 | 472 | then true | |
480 | 473 | else T("invalid epoch length")] | |
481 | - | if (( | |
482 | - | then $Tuple2([IntegerEntry(g, | |
474 | + | if ((bl == bl)) | |
475 | + | then $Tuple2([IntegerEntry(g, bD)], unit) | |
483 | 476 | else throw("Strict value is not equal to itself.") | |
484 | 477 | } | |
485 | 478 | ||
486 | 479 | ||
487 | 480 | ||
488 | - | @Callable( | |
489 | - | func setMaxDepth ( | |
490 | - | let | |
481 | + | @Callable(ba) | |
482 | + | func setMaxDepth (bE) = { | |
483 | + | let bl = [bc(ba), if ((bE > 0)) | |
491 | 484 | then true | |
492 | 485 | else T("invalid max depth")] | |
493 | - | if (( | |
494 | - | then $Tuple2([IntegerEntry(k, | |
486 | + | if ((bl == bl)) | |
487 | + | then $Tuple2([IntegerEntry(k, bE)], unit) | |
495 | 488 | else throw("Strict value is not equal to itself.") | |
496 | 489 | } | |
497 | 490 | ||
498 | 491 | ||
499 | 492 | ||
500 | - | @Callable( | |
501 | - | func processVoteINTERNAL ( | |
502 | - | let | |
503 | - | if (( | |
493 | + | @Callable(ba) | |
494 | + | func processVoteINTERNAL (bF,Q) = { | |
495 | + | let bG = bd(ba) | |
496 | + | if ((bG == bG)) | |
504 | 497 | then { | |
505 | - | let | |
498 | + | let be = valueOrErrorMessage(addressFromString(Q), R(("processVoteINTERNAL: invalid user address " + Q))) | |
506 | 499 | let i = ad(this, j) | |
507 | - | let | |
508 | - | let | |
509 | - | let | |
510 | - | let | |
511 | - | let | |
512 | - | let | |
513 | - | let | |
514 | - | let | |
500 | + | let bH = (i - 1) | |
501 | + | let bk = ad(this, f) | |
502 | + | let bq = ad(this, x(i)) | |
503 | + | let br = (bq + bk) | |
504 | + | let bI = ad(this, x(bH)) | |
505 | + | let bJ = ad(this, h(bH)) | |
506 | + | let bK = (bI + bJ) | |
507 | + | let bL = if ((bH >= 0)) | |
515 | 508 | then true | |
516 | 509 | else T("processVoteINTERNAL: invalid previous epoch") | |
517 | - | if (( | |
510 | + | if ((bL == bL)) | |
518 | 511 | then { | |
519 | - | let A = af( | |
520 | - | let | |
521 | - | let C = | |
522 | - | let D = | |
523 | - | let | |
524 | - | let | |
525 | - | let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, | |
512 | + | let A = af(bF) | |
513 | + | let bM = A | |
514 | + | let C = bM._1 | |
515 | + | let D = bM._2 | |
516 | + | let bA = az(A) | |
517 | + | let bx = { | |
518 | + | let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, br], nil) | |
526 | 519 | if ($isInstanceOf(ac, "Int")) | |
527 | 520 | then ac | |
528 | 521 | else throw(($getType(ac) + " couldn't be cast to Int")) | |
529 | 522 | } | |
530 | - | let | |
531 | - | let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, | |
523 | + | let bN = { | |
524 | + | let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, bK], nil) | |
532 | 525 | if ($isInstanceOf(ac, "Int")) | |
533 | 526 | then ac | |
534 | 527 | else throw(($getType(ac) + " couldn't be cast to Int")) | |
535 | 528 | } | |
536 | - | let | |
537 | - | let | |
538 | - | let | |
539 | - | let | |
529 | + | let bw = valueOrElse(getInteger(O(i)), 0) | |
530 | + | let bO = valueOrElse(getInteger(I(A, i)), 0) | |
531 | + | let bP = valueOrErrorMessage(getInteger(G(A, be, bH)), R((((("processVoteINTERNAL " + bF) + " ") + Q) + ": no previous vote"))) | |
532 | + | let bt = valueOrElse(getInteger(this, E(be, i)), 0) | |
540 | 533 | let L = ao(C, D) | |
541 | - | let | |
542 | - | let | |
543 | - | let | |
544 | - | let | |
534 | + | let bQ = valueOrElse(getInteger(K(L, bH)), 0) | |
535 | + | let bj = addressFromStringValue(ab(this, p)) | |
536 | + | let bR = valueOrElse(getInteger(bj, P(L, Q)), 0) | |
537 | + | let bS = if ((bR == 0)) | |
545 | 538 | then nil | |
546 | - | else [IntegerEntry(K(L, | |
547 | - | let | |
548 | - | then fraction( | |
539 | + | else [IntegerEntry(K(L, bH), (bQ + bP))] | |
540 | + | let bz = if ((bN > 0)) | |
541 | + | then fraction(bP, bx, bN) | |
549 | 542 | else 0 | |
550 | - | let | |
551 | - | then | |
543 | + | let bT = if (if ((bz > 0)) | |
544 | + | then bA | |
552 | 545 | else false) | |
553 | - | then [IntegerEntry(G(A, | |
554 | - | else | |
555 | - | $Tuple2(( | |
546 | + | then [IntegerEntry(G(A, be, i), bz), IntegerEntry(O(i), (bw + bz)), IntegerEntry(I(A, i), (bO + bz)), IntegerEntry(E(be, i), (bt + bz))] | |
547 | + | else aS(aC(A), Q) | |
548 | + | $Tuple2((bT ++ bS), unit) | |
556 | 549 | } | |
557 | 550 | else throw("Strict value is not equal to itself.") | |
558 | 551 | } | |
561 | 554 | ||
562 | 555 | ||
563 | 556 | ||
564 | - | @Callable( | |
565 | - | func processPoolINTERNAL ( | |
566 | - | let | |
567 | - | if (( | |
557 | + | @Callable(ba) | |
558 | + | func processPoolINTERNAL (bF,bU) = { | |
559 | + | let bG = bd(ba) | |
560 | + | if ((bG == bG)) | |
568 | 561 | then { | |
569 | - | let | |
570 | - | let | |
571 | - | if ( | |
572 | - | then | |
573 | - | else ( | |
562 | + | let bV = { | |
563 | + | let bW = ad(this, j) | |
564 | + | if (bU) | |
565 | + | then bW | |
566 | + | else (bW - 1) | |
574 | 567 | } | |
575 | - | let | |
568 | + | let bL = if ((bV >= 0)) | |
576 | 569 | then true | |
577 | 570 | else T("processPoolINTERNAL: invalid target epoch") | |
578 | - | if (( | |
571 | + | if ((bL == bL)) | |
579 | 572 | then { | |
580 | - | let A = af( | |
581 | - | let | |
582 | - | let C = | |
583 | - | let D = | |
584 | - | let | |
573 | + | let A = af(bF) | |
574 | + | let bX = A | |
575 | + | let C = bX._1 | |
576 | + | let D = bX._2 | |
577 | + | let bj = addressFromStringValue(ab(this, p)) | |
585 | 578 | let ay = ao(C, D) | |
586 | - | let ca = { | |
587 | - | let ac = invoke(bl, "usersListTraversal", [ay], nil) | |
588 | - | if ($isInstanceOf(ac, "Boolean")) | |
589 | - | then ac | |
590 | - | else throw(($getType(ac) + " couldn't be cast to Boolean")) | |
591 | - | } | |
592 | - | if ((ca == ca)) | |
593 | - | then if (ca) | |
594 | - | then $Tuple2(nil, true) | |
595 | - | else { | |
596 | - | let bC = az(A) | |
597 | - | let by = valueOrElse(getInteger(this, O(bX)), 0) | |
598 | - | let bQ = valueOrElse(getInteger(this, I(A, bX)), 0) | |
599 | - | let cb = if (if ((by == 0)) | |
600 | - | then true | |
601 | - | else !(bC)) | |
602 | - | then 0 | |
603 | - | else fraction(bQ, b, by) | |
604 | - | let cc = invoke(ah, "modifyWeight", [ay, cb], nil) | |
605 | - | if ((cc == cc)) | |
606 | - | then { | |
607 | - | let cd = if (if (bC) | |
608 | - | then true | |
609 | - | else bW) | |
610 | - | then nil | |
611 | - | else ([DeleteEntry(z(A))] ++ aU(aD, bH)) | |
612 | - | $Tuple2(([IntegerEntry(M(A, bX), cb)] ++ cd), false) | |
613 | - | } | |
614 | - | else throw("Strict value is not equal to itself.") | |
615 | - | } | |
579 | + | let bA = az(A) | |
580 | + | let bw = valueOrElse(getInteger(this, O(bV)), 0) | |
581 | + | let bO = valueOrElse(getInteger(this, I(A, bV)), 0) | |
582 | + | let bY = if (if ((bw == 0)) | |
583 | + | then true | |
584 | + | else !(bA)) | |
585 | + | then 0 | |
586 | + | else fraction(bO, b, bw) | |
587 | + | let bZ = invoke(ah, "modifyWeight", [ay, bY], nil) | |
588 | + | if ((bZ == bZ)) | |
589 | + | then { | |
590 | + | let ca = if (if (bA) | |
591 | + | then true | |
592 | + | else bU) | |
593 | + | then nil | |
594 | + | else ([DeleteEntry(z(A))] ++ aS(aB, bF)) | |
595 | + | $Tuple2(([IntegerEntry(M(A, bV), bY)] ++ ca), false) | |
596 | + | } | |
616 | 597 | else throw("Strict value is not equal to itself.") | |
617 | 598 | } | |
618 | 599 | else throw("Strict value is not equal to itself.") | |
622 | 603 | ||
623 | 604 | ||
624 | 605 | ||
625 | - | @Callable( | |
606 | + | @Callable(ba) | |
626 | 607 | func finalizeHelper () = { | |
627 | - | let | |
608 | + | let bU = valueOrElse(getBoolean(w), false) | |
628 | 609 | let i = valueOrElse(getInteger(this, j), 0) | |
629 | - | let | |
630 | - | let | |
631 | - | let | |
632 | - | let | |
633 | - | let | |
634 | - | if (if (if ((height >= | |
635 | - | then ( | |
610 | + | let cb = (i - 1) | |
611 | + | let bq = ad(this, x(i)) | |
612 | + | let bk = ad(this, f) | |
613 | + | let br = (bq + bk) | |
614 | + | let bs = getInteger(this, q) | |
615 | + | if (if (if ((height >= br)) | |
616 | + | then (bs == unit) | |
636 | 617 | else false) | |
637 | - | then !( | |
618 | + | then !(bU) | |
638 | 619 | else false) | |
639 | 620 | then { | |
640 | - | let | |
641 | - | let | |
642 | - | let | |
643 | - | let Y = | |
621 | + | let cc = (i + 1) | |
622 | + | let cd = getInteger(this, g) | |
623 | + | let ce = { | |
624 | + | let Y = cd | |
644 | 625 | if ($isInstanceOf(Y, "Int")) | |
645 | 626 | then { | |
646 | - | let | |
647 | - | [IntegerEntry(f, | |
627 | + | let bD = Y | |
628 | + | [IntegerEntry(f, bD), DeleteEntry(g)] | |
648 | 629 | } | |
649 | 630 | else if ($isInstanceOf(Y, "Unit")) | |
650 | 631 | then nil | |
651 | 632 | else throw("Match error") | |
652 | 633 | } | |
653 | - | $Tuple2(([IntegerEntry(x( | |
634 | + | $Tuple2(([IntegerEntry(x(cc), height), IntegerEntry(t, height), IntegerEntry(j, cc), IntegerEntry(q, d), IntegerEntry(h(i), bk)] ++ ce), true) | |
654 | 635 | } | |
655 | - | else if (if ( | |
656 | - | then ( | |
636 | + | else if (if (bU) | |
637 | + | then (bs == unit) | |
657 | 638 | else false) | |
658 | 639 | then $Tuple2([IntegerEntry(q, e)], true) | |
659 | - | else if (( | |
640 | + | else if ((bs == unit)) | |
660 | 641 | then $Tuple2(nil, false) | |
661 | - | else if (( | |
642 | + | else if ((bs == d)) | |
662 | 643 | then { | |
663 | - | let | |
664 | - | let | |
665 | - | let Y = | |
644 | + | let cf = getString(r) | |
645 | + | let cg = getString(s) | |
646 | + | let Y = cf | |
666 | 647 | if ($isInstanceOf(Y, "Unit")) | |
667 | 648 | then { | |
668 | - | let | |
669 | - | if ($isInstanceOf( | |
649 | + | let ch = getString(aE(aB)) | |
650 | + | if ($isInstanceOf(ch, "Unit")) | |
670 | 651 | then $Tuple2([IntegerEntry(q, e), DeleteEntry(r), DeleteEntry(s)], true) | |
671 | - | else if ($isInstanceOf( | |
652 | + | else if ($isInstanceOf(ch, "String")) | |
672 | 653 | then { | |
673 | - | let | |
674 | - | $Tuple2([StringEntry(r, | |
654 | + | let ci = ch | |
655 | + | $Tuple2([StringEntry(r, ci)], true) | |
675 | 656 | } | |
676 | 657 | else throw("Match error") | |
677 | 658 | } | |
678 | 659 | else if ($isInstanceOf(Y, "String")) | |
679 | 660 | then { | |
680 | - | let | |
681 | - | let A = af( | |
682 | - | let | |
683 | - | let | |
684 | - | if ($isInstanceOf( | |
685 | - | then getString( | |
686 | - | else if ($isInstanceOf( | |
661 | + | let bF = Y | |
662 | + | let A = af(bF) | |
663 | + | let cj = { | |
664 | + | let ch = cg | |
665 | + | if ($isInstanceOf(ch, "Unit")) | |
666 | + | then getString(aE(aC(A))) | |
667 | + | else if ($isInstanceOf(ch, "String")) | |
687 | 668 | then { | |
688 | - | let | |
689 | - | let | |
690 | - | if (( | |
669 | + | let ck = ch | |
670 | + | let cl = getString(aK(aC(A), ck)) | |
671 | + | if ((cl == cl)) | |
691 | 672 | then { | |
692 | - | let | |
693 | - | if (( | |
694 | - | then | |
673 | + | let cm = invoke(this, "processVoteINTERNAL", [bF, ck], nil) | |
674 | + | if ((cm == cm)) | |
675 | + | then cl | |
695 | 676 | else throw("Strict value is not equal to itself.") | |
696 | 677 | } | |
697 | 678 | else throw("Strict value is not equal to itself.") | |
698 | 679 | } | |
699 | 680 | else throw("Match error") | |
700 | 681 | } | |
701 | - | let | |
702 | - | if ($isInstanceOf( | |
682 | + | let ch = cj | |
683 | + | if ($isInstanceOf(ch, "Unit")) | |
703 | 684 | then { | |
704 | - | let | |
705 | - | let | |
706 | - | if ($isInstanceOf( | |
685 | + | let cn = getString(aK(aB, bF)) | |
686 | + | let co = cn | |
687 | + | if ($isInstanceOf(co, "Unit")) | |
707 | 688 | then $Tuple2([IntegerEntry(q, e), DeleteEntry(r), DeleteEntry(s)], true) | |
708 | - | else if ($isInstanceOf( | |
689 | + | else if ($isInstanceOf(co, "String")) | |
709 | 690 | then { | |
710 | - | let | |
711 | - | $Tuple2([StringEntry(r, | |
691 | + | let aW = co | |
692 | + | $Tuple2([StringEntry(r, aW), DeleteEntry(s)], true) | |
712 | 693 | } | |
713 | 694 | else throw("Match error") | |
714 | 695 | } | |
715 | - | else if ($isInstanceOf( | |
696 | + | else if ($isInstanceOf(ch, "String")) | |
716 | 697 | then { | |
717 | - | let | |
718 | - | $Tuple2([StringEntry(s, | |
698 | + | let cp = ch | |
699 | + | $Tuple2([StringEntry(s, cp)], true) | |
719 | 700 | } | |
720 | 701 | else throw("Match error") | |
721 | 702 | } | |
722 | 703 | else throw("Match error") | |
723 | 704 | } | |
724 | - | else if (( | |
705 | + | else if ((bs == e)) | |
725 | 706 | then { | |
726 | - | let | |
727 | - | let Y = | |
707 | + | let cf = getString(r) | |
708 | + | let Y = cf | |
728 | 709 | if ($isInstanceOf(Y, "Unit")) | |
729 | 710 | then { | |
730 | - | let | |
731 | - | if ($isInstanceOf( | |
711 | + | let ch = getString(aE(aB)) | |
712 | + | if ($isInstanceOf(ch, "Unit")) | |
732 | 713 | then { | |
733 | - | let | |
714 | + | let bT = if (bU) | |
734 | 715 | then [DeleteEntry(q), DeleteEntry(w)] | |
735 | - | else [DeleteEntry(q), BooleanEntry(y(ce), true), IntegerEntry(u, i), IntegerEntry(v, bs)] | |
736 | - | let ct = aB() | |
737 | - | if ((ct == ct)) | |
738 | - | then $Tuple2(bV, true) | |
739 | - | else throw("Strict value is not equal to itself.") | |
716 | + | else [DeleteEntry(q), BooleanEntry(y(cb), true), IntegerEntry(u, i), IntegerEntry(v, bq)] | |
717 | + | $Tuple2(bT, true) | |
740 | 718 | } | |
741 | - | else if ($isInstanceOf( | |
719 | + | else if ($isInstanceOf(ch, "String")) | |
742 | 720 | then { | |
743 | - | let | |
744 | - | $Tuple2([StringEntry(r, | |
721 | + | let cq = ch | |
722 | + | $Tuple2([StringEntry(r, cq)], true) | |
745 | 723 | } | |
746 | 724 | else throw("Match error") | |
747 | 725 | } | |
748 | 726 | else if ($isInstanceOf(Y, "String")) | |
749 | 727 | then { | |
750 | - | let | |
751 | - | let | |
752 | - | if (( | |
728 | + | let bF = Y | |
729 | + | let cn = getString(aK(aB, bF)) | |
730 | + | if ((cn == cn)) | |
753 | 731 | then { | |
754 | - | let | |
755 | - | let ac = invoke(this, "processPoolINTERNAL", [ | |
732 | + | let cr = { | |
733 | + | let ac = invoke(this, "processPoolINTERNAL", [bF, bU], nil) | |
756 | 734 | if ($isInstanceOf(ac, "Boolean")) | |
757 | 735 | then ac | |
758 | 736 | else throw(($getType(ac) + " couldn't be cast to Boolean")) | |
759 | 737 | } | |
760 | - | if (( | |
761 | - | then if ( | |
738 | + | if ((cr == cr)) | |
739 | + | then if (cr) | |
762 | 740 | then $Tuple2(nil, true) | |
763 | 741 | else { | |
764 | - | let | |
765 | - | if ($isInstanceOf( | |
742 | + | let ch = cn | |
743 | + | if ($isInstanceOf(ch, "Unit")) | |
766 | 744 | then { | |
767 | - | let | |
745 | + | let bT = if (bU) | |
768 | 746 | then [DeleteEntry(q), DeleteEntry(w), DeleteEntry(r)] | |
769 | - | else [DeleteEntry(q), BooleanEntry(y(ce), true), IntegerEntry(u, i), IntegerEntry(v, bs), DeleteEntry(r)] | |
770 | - | let ct = aB() | |
771 | - | if ((ct == ct)) | |
772 | - | then $Tuple2(bV, true) | |
773 | - | else throw("Strict value is not equal to itself.") | |
747 | + | else [DeleteEntry(q), BooleanEntry(y(cb), true), IntegerEntry(u, i), IntegerEntry(v, bq), DeleteEntry(r)] | |
748 | + | $Tuple2(bT, true) | |
774 | 749 | } | |
775 | - | else if ($isInstanceOf( | |
750 | + | else if ($isInstanceOf(ch, "String")) | |
776 | 751 | then { | |
777 | - | let | |
778 | - | $Tuple2([StringEntry(r, | |
752 | + | let cq = ch | |
753 | + | $Tuple2([StringEntry(r, cq)], true) | |
779 | 754 | } | |
780 | 755 | else throw("Match error") | |
781 | 756 | } | |
790 | 765 | ||
791 | 766 | ||
792 | 767 | ||
793 | - | @Callable( | |
794 | - | func finalizeWrapper ( | |
795 | - | let | |
796 | - | let | |
768 | + | @Callable(ba) | |
769 | + | func finalizeWrapper (cs) = { | |
770 | + | let ct = addressFromStringValue(getStringValue(this, m)) | |
771 | + | let cu = { | |
797 | 772 | let ac = invoke(this, "finalizeHelper", nil, nil) | |
798 | 773 | if ($isInstanceOf(ac, "Boolean")) | |
799 | 774 | then ac | |
800 | 775 | else throw(($getType(ac) + " couldn't be cast to Boolean")) | |
801 | 776 | } | |
802 | - | if (( | |
803 | - | then if (!( | |
804 | - | then if (( | |
777 | + | if ((cu == cu)) | |
778 | + | then if (!(cu)) | |
779 | + | then if ((cs == 0)) | |
805 | 780 | then T("Current voting is not over yet") | |
806 | 781 | else { | |
807 | - | let | |
808 | - | if (( | |
782 | + | let cv = invoke(ct, "finalize", nil, nil) | |
783 | + | if ((cv == cv)) | |
809 | 784 | then $Tuple2(nil, unit) | |
810 | 785 | else throw("Strict value is not equal to itself.") | |
811 | 786 | } | |
812 | 787 | else { | |
813 | - | let | |
814 | - | if (( | |
788 | + | let cw = valueOrElse(getInteger(this, k), c) | |
789 | + | if ((cw > cs)) | |
815 | 790 | then { | |
816 | - | let | |
817 | - | if (( | |
791 | + | let cv = invoke(this, "finalizeWrapper", [(cs + 1)], nil) | |
792 | + | if ((cv == cv)) | |
818 | 793 | then $Tuple2(nil, unit) | |
819 | 794 | else throw("Strict value is not equal to itself.") | |
820 | 795 | } | |
825 | 800 | ||
826 | 801 | ||
827 | 802 | ||
828 | - | @Callable( | |
803 | + | @Callable(ba) | |
829 | 804 | func finalize () = { | |
830 | - | let | |
831 | - | if (( | |
805 | + | let cv = invoke(this, "finalizeWrapper", [0], nil) | |
806 | + | if ((cv == cv)) | |
832 | 807 | then $Tuple2(nil, unit) | |
833 | 808 | else throw("Strict value is not equal to itself.") | |
834 | 809 | } | |
835 | 810 | ||
836 | 811 | ||
837 | 812 | ||
838 | - | @Callable( | |
839 | - | func containsNodeREADONLY ( | |
813 | + | @Callable(ba) | |
814 | + | func containsNodeREADONLY (aF,aJ) = $Tuple2(nil, aL(aF, aJ)) | |
840 | 815 | ||
841 | 816 | ||
842 | 817 | ||
843 | - | @Callable( | |
844 | - | func insertNode ( | |
845 | - | let | |
846 | - | if (( | |
847 | - | then $Tuple2( | |
818 | + | @Callable(ba) | |
819 | + | func insertNode (aF,aJ) = { | |
820 | + | let bG = bc(ba) | |
821 | + | if ((bG == bG)) | |
822 | + | then $Tuple2(aP(aF, aJ), unit) | |
848 | 823 | else throw("Strict value is not equal to itself.") | |
849 | 824 | } | |
850 | 825 | ||
851 | 826 | ||
852 | 827 | ||
853 | - | @Callable( | |
854 | - | func deleteNode ( | |
855 | - | let | |
856 | - | if (( | |
857 | - | then $Tuple2( | |
828 | + | @Callable(ba) | |
829 | + | func deleteNode (aF,aJ) = { | |
830 | + | let bG = bc(ba) | |
831 | + | if ((bG == bG)) | |
832 | + | then $Tuple2(aS(aF, aJ), unit) | |
858 | 833 | else throw("Strict value is not equal to itself.") | |
859 | 834 | } | |
860 | 835 | ||
861 | 836 | ||
862 | 837 | ||
863 | - | @Callable( | |
838 | + | @Callable(ba) | |
864 | 839 | func isFinalizationInProgress () = { | |
865 | - | let | |
866 | - | let | |
867 | - | $Tuple2(nil, | |
840 | + | let bs = getInteger(this, q) | |
841 | + | let cx = (bs != unit) | |
842 | + | $Tuple2(nil, cx) | |
868 | 843 | } | |
869 | 844 | ||
870 | 845 | ||
871 | 846 | ||
872 | - | @Callable( | |
847 | + | @Callable(ba) | |
873 | 848 | func deletePool (C,D) = { | |
874 | - | let | |
849 | + | let bG = if (if ((ba.caller == ah)) | |
875 | 850 | then true | |
876 | - | else | |
851 | + | else bc(ba)) | |
877 | 852 | then true | |
878 | 853 | else T("Permission denied") | |
879 | - | if (( | |
854 | + | if ((bG == bG)) | |
880 | 855 | then { | |
881 | - | let | |
856 | + | let aF = "pools" | |
882 | 857 | let A = $Tuple2(C, D) | |
883 | - | let | |
884 | - | let | |
885 | - | then | |
858 | + | let aJ = makeString([C, D], a) | |
859 | + | let bT = if (aL(aF, aJ)) | |
860 | + | then aS(aF, aJ) | |
886 | 861 | else nil | |
887 | - | ([DeleteEntry(z(A))] ++ | |
862 | + | ([DeleteEntry(z(A))] ++ bT) | |
888 | 863 | } | |
889 | 864 | else throw("Strict value is not equal to itself.") | |
890 | 865 | } | |
891 | 866 | ||
892 | 867 | ||
893 | - | @Verifier(cB) | |
894 | - | func cC () = { | |
895 | - | let cD = { | |
896 | - | let Y = aZ() | |
868 | + | ||
869 | + | @Callable(ba) | |
870 | + | func getLockedGwxAmount (Q) = { | |
871 | + | let be = valueOrErrorMessage(addressFromString(Q), R("invalid user address")) | |
872 | + | let i = valueOrElse(getInteger(this, j), 0) | |
873 | + | let cy = { | |
874 | + | let Y = getInteger(this, E(be, i)) | |
875 | + | if ($isInstanceOf(Y, "Unit")) | |
876 | + | then 0 | |
877 | + | else if ($isInstanceOf(Y, "Int")) | |
878 | + | then { | |
879 | + | let cz = Y | |
880 | + | cz | |
881 | + | } | |
882 | + | else throw("Match error") | |
883 | + | } | |
884 | + | $Tuple2(nil, cy) | |
885 | + | } | |
886 | + | ||
887 | + | ||
888 | + | @Verifier(cA) | |
889 | + | func cB () = { | |
890 | + | let cC = { | |
891 | + | let Y = aX() | |
897 | 892 | if ($isInstanceOf(Y, "ByteVector")) | |
898 | 893 | then { | |
899 | - | let | |
900 | - | | |
894 | + | let bb = Y | |
895 | + | bb | |
901 | 896 | } | |
902 | 897 | else if ($isInstanceOf(Y, "Unit")) | |
903 | - | then | |
898 | + | then cA.senderPublicKey | |
904 | 899 | else throw("Match error") | |
905 | 900 | } | |
906 | - | sigVerify( | |
901 | + | sigVerify(cA.bodyBytes, cA.proofs[0], cC) | |
907 | 902 | } | |
908 | 903 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | let b = 100000000 | |
7 | 7 | ||
8 | 8 | let c = 10 | |
9 | 9 | ||
10 | 10 | let d = 0 | |
11 | 11 | ||
12 | 12 | let e = 1 | |
13 | 13 | ||
14 | 14 | let f = makeString(["%s", "epochLength"], a) | |
15 | 15 | ||
16 | 16 | let g = makeString(["%s%s", "epochLength__new"], a) | |
17 | 17 | ||
18 | 18 | func h (i) = makeString(["%s%d", "epochLength", toString(i)], a) | |
19 | 19 | ||
20 | 20 | ||
21 | 21 | let j = makeString(["%s", "currentEpoch"], a) | |
22 | 22 | ||
23 | 23 | let k = makeString(["%s", "maxDepth"], a) | |
24 | 24 | ||
25 | 25 | let l = makeString(["%s", "votingEmissionCandidateContract"], a) | |
26 | 26 | ||
27 | 27 | let m = makeString(["%s", "votingEmissionRateContract"], a) | |
28 | 28 | ||
29 | 29 | let n = makeString(["%s", "factoryContract"], a) | |
30 | 30 | ||
31 | 31 | let o = makeString(["%s", "boostingContract"], a) | |
32 | 32 | ||
33 | 33 | let p = makeString(["%s", "stakingContract"], a) | |
34 | 34 | ||
35 | 35 | let q = makeString(["%s", "finalizationStage"], a) | |
36 | 36 | ||
37 | 37 | let r = makeString(["%s", "nextPool"], a) | |
38 | 38 | ||
39 | 39 | let s = makeString(["%s", "nextUser"], a) | |
40 | 40 | ||
41 | 41 | let t = makeString(["%s", "startHeight"], a) | |
42 | 42 | ||
43 | 43 | let u = makeString(["%s", "currentEpochUi"], a) | |
44 | 44 | ||
45 | 45 | let v = makeString(["%s", "startHeightUi"], a) | |
46 | 46 | ||
47 | 47 | let w = makeString(["%s", "force"], a) | |
48 | 48 | ||
49 | 49 | func x (i) = makeString(["%s%d", "startHeight", toString(i)], a) | |
50 | 50 | ||
51 | 51 | ||
52 | 52 | func y (i) = makeString(["%s%d", "finalized", toString(i)], a) | |
53 | 53 | ||
54 | 54 | ||
55 | 55 | func z (A) = { | |
56 | 56 | let B = A | |
57 | 57 | let C = B._1 | |
58 | 58 | let D = B._2 | |
59 | 59 | makeString(["%s%s%s", "inList", C, D], a) | |
60 | 60 | } | |
61 | 61 | ||
62 | 62 | ||
63 | 63 | func E (F,i) = makeString(["%s%s%d", "used", toString(F), toString(i)], a) | |
64 | 64 | ||
65 | 65 | ||
66 | 66 | func G (A,F,i) = { | |
67 | 67 | let H = A | |
68 | 68 | let C = H._1 | |
69 | 69 | let D = H._2 | |
70 | 70 | makeString(["%s%s%s%s%d", "vote", C, D, toString(F), toString(i)], a) | |
71 | 71 | } | |
72 | 72 | ||
73 | 73 | ||
74 | 74 | func I (A,i) = { | |
75 | 75 | let J = A | |
76 | 76 | let C = J._1 | |
77 | 77 | let D = J._2 | |
78 | 78 | makeString(["%s%s%s%d", "votingResult", C, D, toString(i)], a) | |
79 | 79 | } | |
80 | 80 | ||
81 | 81 | ||
82 | 82 | func K (L,i) = makeString(["%s%s%d", "votingResultStaked", L, toString(i)], a) | |
83 | 83 | ||
84 | 84 | ||
85 | 85 | func M (A,i) = { | |
86 | 86 | let N = A | |
87 | 87 | let C = N._1 | |
88 | 88 | let D = N._2 | |
89 | 89 | makeString(["%s%s%s%d", "poolShare", C, D, toString(i)], a) | |
90 | 90 | } | |
91 | 91 | ||
92 | 92 | ||
93 | 93 | func O (i) = makeString(["%s%d", "totalVotes", toString(i)], a) | |
94 | 94 | ||
95 | 95 | ||
96 | 96 | func P (L,Q) = makeString(["%s%s%s", "staked", Q, L], a) | |
97 | 97 | ||
98 | 98 | ||
99 | 99 | func R (S) = makeString(["voting_emission.ride:", S], " ") | |
100 | 100 | ||
101 | 101 | ||
102 | 102 | func T (S) = throw(R(S)) | |
103 | 103 | ||
104 | 104 | ||
105 | 105 | func U (F,V,W) = { | |
106 | 106 | let X = R(makeString(["mandatory ", toString(F), ".", V, " is not defined"], "")) | |
107 | 107 | valueOrErrorMessage({ | |
108 | 108 | let Y = W | |
109 | 109 | if ($isInstanceOf(Y, "String")) | |
110 | 110 | then { | |
111 | 111 | let Z = Y | |
112 | 112 | getString(F, V) | |
113 | 113 | } | |
114 | 114 | else if ($isInstanceOf(Y, "Int")) | |
115 | 115 | then { | |
116 | 116 | let aa = Y | |
117 | 117 | getInteger(F, V) | |
118 | 118 | } | |
119 | 119 | else T("invalid entry type") | |
120 | 120 | }, X) | |
121 | 121 | } | |
122 | 122 | ||
123 | 123 | ||
124 | 124 | func ab (F,V) = { | |
125 | 125 | let ac = U(F, V, "") | |
126 | 126 | if ($isInstanceOf(ac, "String")) | |
127 | 127 | then ac | |
128 | 128 | else throw(($getType(ac) + " couldn't be cast to String")) | |
129 | 129 | } | |
130 | 130 | ||
131 | 131 | ||
132 | 132 | func ad (F,V) = { | |
133 | 133 | let ac = U(F, V, 0) | |
134 | 134 | if ($isInstanceOf(ac, "Int")) | |
135 | 135 | then ac | |
136 | 136 | else throw(($getType(ac) + " couldn't be cast to Int")) | |
137 | 137 | } | |
138 | 138 | ||
139 | 139 | ||
140 | 140 | func ae (A) = ((A._1 + a) + A._2) | |
141 | 141 | ||
142 | 142 | ||
143 | 143 | func af (Z) = { | |
144 | 144 | let ag = split(Z, a) | |
145 | 145 | if ((size(ag) == 2)) | |
146 | 146 | then $Tuple2(ag[0], ag[1]) | |
147 | 147 | else T("invalid pool string") | |
148 | 148 | } | |
149 | 149 | ||
150 | 150 | ||
151 | 151 | let ah = addressFromStringValue(ab(this, n)) | |
152 | 152 | ||
153 | 153 | let ai = 10 | |
154 | 154 | ||
155 | 155 | func aj () = "%s__factoryConfig" | |
156 | 156 | ||
157 | 157 | ||
158 | 158 | func ak (al) = split(ab(al, aj()), a) | |
159 | 159 | ||
160 | 160 | ||
161 | 161 | func am (an) = addressFromStringValue(an[ai]) | |
162 | 162 | ||
163 | 163 | ||
164 | 164 | func ao (C,D) = { | |
165 | 165 | func ap (aq) = ("%s%s%s__mappings__baseAsset2internalId__" + aq) | |
166 | 166 | ||
167 | 167 | func ar (as,at) = (((("%d%d%s%s__" + toString(as)) + "__") + toString(at)) + "__mappings__poolAssets2PoolContract") | |
168 | 168 | ||
169 | 169 | func au (av) = (("%s%s%s__" + av) + "__mappings__poolContract2LpAsset") | |
170 | 170 | ||
171 | 171 | let aw = ad(ah, ap(C)) | |
172 | 172 | let ax = ad(ah, ap(D)) | |
173 | 173 | let av = ab(ah, ar(aw, ax)) | |
174 | 174 | let ay = ab(ah, au(av)) | |
175 | 175 | ay | |
176 | 176 | } | |
177 | 177 | ||
178 | 178 | ||
179 | 179 | func az (A) = { | |
180 | 180 | let aA = A | |
181 | 181 | let C = aA._1 | |
182 | 182 | let D = aA._2 | |
183 | 183 | let ac = invoke(ah, "checkWxEmissionPoolLabel", [C, D], nil) | |
184 | 184 | if ($isInstanceOf(ac, "Boolean")) | |
185 | 185 | then ac | |
186 | 186 | else throw(($getType(ac) + " couldn't be cast to Boolean")) | |
187 | 187 | } | |
188 | 188 | ||
189 | 189 | ||
190 | - | func aB () = { | |
191 | - | let an = ak(ah) | |
192 | - | let aC = am(an) | |
193 | - | invoke(aC, "deposit", nil, nil) | |
194 | - | } | |
190 | + | let aB = "pools" | |
195 | 191 | ||
196 | - | ||
197 | - | let aD = "pools" | |
198 | - | ||
199 | - | func aE (A) = { | |
200 | - | let aF = A | |
201 | - | let C = aF._1 | |
202 | - | let D = aF._2 | |
192 | + | func aC (A) = { | |
193 | + | let aD = A | |
194 | + | let C = aD._1 | |
195 | + | let D = aD._2 | |
203 | 196 | makeString(["votes", C, D], a) | |
204 | 197 | } | |
205 | 198 | ||
206 | 199 | ||
207 | - | func | |
208 | - | let | |
200 | + | func aE (aF) = { | |
201 | + | let aG = if ((aF == aB)) | |
209 | 202 | then "%s%s" | |
210 | 203 | else "%s%s%s%s" | |
211 | - | makeString([ | |
204 | + | makeString([aG, aF, "head"], a) | |
212 | 205 | } | |
213 | 206 | ||
214 | 207 | ||
215 | - | func | |
216 | - | let | |
208 | + | func aH (aF) = { | |
209 | + | let aG = if ((aF == aB)) | |
217 | 210 | then "%s%s" | |
218 | 211 | else "%s%s%s%s" | |
219 | - | makeString([ | |
212 | + | makeString([aG, aF, "size"], a) | |
220 | 213 | } | |
221 | 214 | ||
222 | 215 | ||
223 | - | func | |
224 | - | let | |
216 | + | func aI (aF,aJ) = { | |
217 | + | let aG = if ((aF == aB)) | |
225 | 218 | then "%s%s%s%s" | |
226 | 219 | else "%s%s%s%s%s" | |
227 | - | makeString([ | |
220 | + | makeString([aG, aF, aJ, "prev"], a) | |
228 | 221 | } | |
229 | 222 | ||
230 | 223 | ||
231 | - | func | |
232 | - | let | |
224 | + | func aK (aF,aJ) = { | |
225 | + | let aG = if ((aF == aB)) | |
233 | 226 | then "%s%s%s%s" | |
234 | 227 | else "%s%s%s%s%s" | |
235 | - | makeString([ | |
228 | + | makeString([aG, aF, aJ, "next"], a) | |
236 | 229 | } | |
237 | 230 | ||
238 | 231 | ||
239 | - | func | |
240 | - | let | |
241 | - | let | |
242 | - | let | |
243 | - | if (if (( | |
232 | + | func aL (aF,aJ) = { | |
233 | + | let aM = getString(this, aE(aF)) | |
234 | + | let aN = getString(this, aI(aF, aJ)) | |
235 | + | let aO = getString(this, aK(aF, aJ)) | |
236 | + | if (if ((aJ == valueOrElse(aM, ""))) | |
244 | 237 | then true | |
245 | - | else ( | |
238 | + | else (aN != unit)) | |
246 | 239 | then true | |
247 | - | else ( | |
240 | + | else (aO != unit) | |
248 | 241 | } | |
249 | 242 | ||
250 | 243 | ||
251 | - | func | |
252 | - | let | |
253 | - | let | |
254 | - | let | |
244 | + | func aP (aF,aJ) = { | |
245 | + | let aM = getString(this, aE(aF)) | |
246 | + | let aQ = valueOrElse(getInteger(this, aH(aF)), 0) | |
247 | + | let aR = if (!(aL(aF, aJ))) | |
255 | 248 | then true | |
256 | 249 | else T("Node exists") | |
257 | - | if (( | |
258 | - | then (([IntegerEntry( | |
259 | - | then [StringEntry( | |
260 | - | else nil)) ++ [StringEntry( | |
250 | + | if ((aR == aR)) | |
251 | + | then (([IntegerEntry(aH(aF), (aQ + 1))] ++ (if ((aM != unit)) | |
252 | + | then [StringEntry(aK(aF, aJ), value(aM)), StringEntry(aI(aF, value(aM)), aJ)] | |
253 | + | else nil)) ++ [StringEntry(aE(aF), aJ)]) | |
261 | 254 | else throw("Strict value is not equal to itself.") | |
262 | 255 | } | |
263 | 256 | ||
264 | 257 | ||
265 | - | func | |
266 | - | let | |
267 | - | let | |
268 | - | let | |
269 | - | let | |
270 | - | ([IntegerEntry( | |
271 | - | then ( | |
258 | + | func aS (aF,aJ) = { | |
259 | + | let aM = getString(this, aE(aF)) | |
260 | + | let aQ = valueOrElse(getInteger(this, aH(aF)), 0) | |
261 | + | let aN = getString(this, aI(aF, aJ)) | |
262 | + | let aO = getString(this, aK(aF, aJ)) | |
263 | + | ([IntegerEntry(aH(aF), (aQ - 1))] ++ (if (if ((aN != unit)) | |
264 | + | then (aO != unit) | |
272 | 265 | else false) | |
273 | - | then [StringEntry( | |
274 | - | else if (( | |
275 | - | then [StringEntry( | |
276 | - | else if (( | |
277 | - | then [DeleteEntry( | |
278 | - | else if (( | |
279 | - | then [DeleteEntry( | |
280 | - | else T(((("invalid node: " + | |
266 | + | then [StringEntry(aK(aF, value(aN)), value(aO)), StringEntry(aI(aF, value(aO)), value(aN)), DeleteEntry(aI(aF, aJ)), DeleteEntry(aK(aF, aJ))] | |
267 | + | else if ((aO != unit)) | |
268 | + | then [StringEntry(aE(aF), value(aO)), DeleteEntry(aK(aF, aJ)), DeleteEntry(aI(aF, value(aO)))] | |
269 | + | else if ((aN != unit)) | |
270 | + | then [DeleteEntry(aI(aF, aJ)), DeleteEntry(aK(aF, value(aN)))] | |
271 | + | else if ((aJ == valueOrElse(aM, ""))) | |
272 | + | then [DeleteEntry(aE(aF))] | |
273 | + | else T(((("invalid node: " + aF) + ".") + aJ)))) | |
281 | 274 | } | |
282 | 275 | ||
283 | 276 | ||
284 | - | func | |
277 | + | func aT () = "%s__managerVaultAddress" | |
285 | 278 | ||
286 | 279 | ||
287 | - | func | |
280 | + | func aU () = "%s__managerPublicKey" | |
288 | 281 | ||
289 | 282 | ||
290 | - | func | |
291 | - | let Y = getString( | |
283 | + | func aV () = { | |
284 | + | let Y = getString(aT()) | |
292 | 285 | if ($isInstanceOf(Y, "String")) | |
293 | 286 | then { | |
294 | - | let | |
295 | - | addressFromStringValue( | |
287 | + | let aW = Y | |
288 | + | addressFromStringValue(aW) | |
296 | 289 | } | |
297 | 290 | else this | |
298 | 291 | } | |
299 | 292 | ||
300 | 293 | ||
301 | - | func | |
302 | - | let | |
303 | - | let Y = getString( | |
294 | + | func aX () = { | |
295 | + | let aY = aV() | |
296 | + | let Y = getString(aY, aU()) | |
304 | 297 | if ($isInstanceOf(Y, "String")) | |
305 | 298 | then { | |
306 | - | let | |
307 | - | fromBase58String( | |
299 | + | let aW = Y | |
300 | + | fromBase58String(aW) | |
308 | 301 | } | |
309 | 302 | else if ($isInstanceOf(Y, "Unit")) | |
310 | 303 | then unit | |
311 | 304 | else throw("Match error") | |
312 | 305 | } | |
313 | 306 | ||
314 | 307 | ||
315 | - | func | |
316 | - | let Y = | |
308 | + | func aZ (ba) = { | |
309 | + | let Y = aX() | |
317 | 310 | if ($isInstanceOf(Y, "ByteVector")) | |
318 | 311 | then { | |
319 | - | let | |
320 | - | ( | |
312 | + | let bb = Y | |
313 | + | (ba.callerPublicKey == bb) | |
321 | 314 | } | |
322 | 315 | else if ($isInstanceOf(Y, "Unit")) | |
323 | - | then ( | |
316 | + | then (ba.caller == this) | |
324 | 317 | else throw("Match error") | |
325 | 318 | } | |
326 | 319 | ||
327 | 320 | ||
328 | - | func | |
321 | + | func bc (ba) = if (aZ(ba)) | |
329 | 322 | then true | |
330 | 323 | else throw("permission denied") | |
331 | 324 | ||
332 | 325 | ||
333 | - | func | |
326 | + | func bd (ba) = if ((ba.caller == this)) | |
334 | 327 | then true | |
335 | 328 | else throw("permission denied") | |
336 | 329 | ||
337 | 330 | ||
338 | - | @Callable( | |
339 | - | func getUserGwxAmountAtHeight ( | |
340 | - | let | |
331 | + | @Callable(ba) | |
332 | + | func getUserGwxAmountAtHeight (be,bf) = { | |
333 | + | let bg = valueOrErrorMessage(addressFromString(ab(this, o)), R("invalid boosting contract address")) | |
341 | 334 | $Tuple2(nil, { | |
342 | - | let ac = invoke( | |
335 | + | let ac = invoke(bg, "getUserGwxAmountAtHeightREADONLY", [be, bf], nil) | |
343 | 336 | if ($isInstanceOf(ac, "Int")) | |
344 | 337 | then ac | |
345 | 338 | else throw(($getType(ac) + " couldn't be cast to Int")) | |
346 | 339 | }) | |
347 | 340 | } | |
348 | 341 | ||
349 | 342 | ||
350 | 343 | ||
351 | - | @Callable( | |
352 | - | func constructor (ah,bj,bk | |
353 | - | let | |
344 | + | @Callable(ba) | |
345 | + | func constructor (ah,bh,bi,bj,bk) = { | |
346 | + | let bl = [bc(ba), if ((addressFromString(ah) != unit)) | |
354 | 347 | then true | |
355 | - | else "invalid factory contract address", if ((addressFromString( | |
348 | + | else "invalid factory contract address", if ((addressFromString(bh) != unit)) | |
356 | 349 | then true | |
357 | - | else "invalid voting emission candidate contract address", if ((addressFromString( | |
350 | + | else "invalid voting emission candidate contract address", if ((addressFromString(bi) != unit)) | |
358 | 351 | then true | |
359 | - | else "invalid boosting contract address", if ((addressFromString( | |
352 | + | else "invalid boosting contract address", if ((addressFromString(bj) != unit)) | |
360 | 353 | then true | |
361 | - | else "invalid staking contract address", if (( | |
354 | + | else "invalid staking contract address", if ((bk > 0)) | |
362 | 355 | then true | |
363 | 356 | else T("invalid epoch length")] | |
364 | - | if (( | |
365 | - | then $Tuple2([StringEntry(n, ah), StringEntry(l, | |
357 | + | if ((bl == bl)) | |
358 | + | then $Tuple2([StringEntry(n, ah), StringEntry(l, bh), StringEntry(o, bi), StringEntry(p, bj), IntegerEntry(f, bk)], unit) | |
366 | 359 | else throw("Strict value is not equal to itself.") | |
367 | 360 | } | |
368 | 361 | ||
369 | 362 | ||
370 | 363 | ||
371 | - | @Callable( | |
364 | + | @Callable(ba) | |
372 | 365 | func create (C,D) = { | |
373 | - | let | |
366 | + | let bl = [if ((toBase58String(ba.caller.bytes) == valueOrElse(getString(this, l), ""))) | |
374 | 367 | then true | |
375 | - | else | |
376 | - | if (( | |
368 | + | else bc(ba)] | |
369 | + | if ((bl == bl)) | |
377 | 370 | then { | |
378 | 371 | let A = $Tuple2(C, D) | |
379 | - | let | |
380 | - | let | |
381 | - | let | |
372 | + | let bm = ([BooleanEntry(z(A), true)] ++ aP(aB, ae(A))) | |
373 | + | let bn = (getInteger(this, j) == unit) | |
374 | + | let bo = if (bn) | |
382 | 375 | then { | |
383 | 376 | let i = 0 | |
384 | 377 | [IntegerEntry(j, i), IntegerEntry(x(i), height), IntegerEntry(t, height), IntegerEntry(u, i), IntegerEntry(v, height)] | |
385 | 378 | } | |
386 | 379 | else nil | |
387 | - | $Tuple2(( | |
380 | + | $Tuple2((bm ++ bo), unit) | |
388 | 381 | } | |
389 | 382 | else throw("Strict value is not equal to itself.") | |
390 | 383 | } | |
391 | 384 | ||
392 | 385 | ||
393 | 386 | ||
394 | - | @Callable( | |
395 | - | func vote (C,D, | |
387 | + | @Callable(ba) | |
388 | + | func vote (C,D,bp) = { | |
396 | 389 | let A = $Tuple2(C, D) | |
397 | 390 | let i = valueOrElse(getInteger(this, j), 0) | |
398 | - | let | |
399 | - | let | |
400 | - | let | |
401 | - | let | |
402 | - | let | |
403 | - | let | |
404 | - | let | |
405 | - | let | |
406 | - | let | |
407 | - | let ac = invoke(this, "getUserGwxAmountAtHeight", [toBase58String( | |
391 | + | let bq = ad(this, x(i)) | |
392 | + | let bk = ad(this, f) | |
393 | + | let br = (bq + bk) | |
394 | + | let bs = getInteger(this, q) | |
395 | + | let bt = valueOrElse(getInteger(this, E(ba.caller, i)), 0) | |
396 | + | let bu = valueOrElse(getInteger(this, G(A, ba.caller, i)), 0) | |
397 | + | let bv = valueOrElse(getInteger(this, I(A, i)), 0) | |
398 | + | let bw = valueOrElse(getInteger(this, O(i)), 0) | |
399 | + | let bx = { | |
400 | + | let ac = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(ba.caller.bytes), br], nil) | |
408 | 401 | if ($isInstanceOf(ac, "Int")) | |
409 | 402 | then ac | |
410 | 403 | else throw(($getType(ac) + " couldn't be cast to Int")) | |
411 | 404 | } | |
412 | - | let | |
413 | - | let | |
414 | - | let | |
415 | - | let | |
405 | + | let by = (bx - bt) | |
406 | + | let bz = (bu + bp) | |
407 | + | let bA = az(A) | |
408 | + | let bl = [if ((getBoolean(z(A)) != unit)) | |
416 | 409 | then true | |
417 | - | else T("invalid assets"), if (( | |
410 | + | else T("invalid assets"), if ((br > height)) | |
418 | 411 | then true | |
419 | - | else T("invalid height"), if (( | |
412 | + | else T("invalid height"), if ((bs == unit)) | |
420 | 413 | then true | |
421 | - | else T("finalization in progress"), if (( | |
414 | + | else T("finalization in progress"), if ((bx > 0)) | |
422 | 415 | then true | |
423 | - | else T("you do not have gWX"), if (if (( | |
424 | - | then ( | |
416 | + | else T("you do not have gWX"), if (if ((bp > 0)) | |
417 | + | then (by >= bp) | |
425 | 418 | else false) | |
426 | 419 | then true | |
427 | - | else T("invalid amount"), if ( | |
420 | + | else T("invalid amount"), if (bA) | |
428 | 421 | then true | |
429 | 422 | else T("pool hasn't WX_EMISSION label")] | |
430 | - | if (( | |
423 | + | if ((bl == bl)) | |
431 | 424 | then { | |
432 | - | let | |
433 | - | let Q = toString( | |
434 | - | let | |
425 | + | let bB = aC(A) | |
426 | + | let Q = toString(ba.caller) | |
427 | + | let bC = if (aL(bB, Q)) | |
435 | 428 | then nil | |
436 | - | else | |
437 | - | $Tuple2(([IntegerEntry(E( | |
429 | + | else aP(bB, Q) | |
430 | + | $Tuple2(([IntegerEntry(E(ba.caller, i), (bt + bp)), IntegerEntry(G(A, ba.caller, i), bz), IntegerEntry(I(A, i), (bv + bp)), IntegerEntry(O(i), (bw + bp))] ++ bC), unit) | |
438 | 431 | } | |
439 | 432 | else throw("Strict value is not equal to itself.") | |
440 | 433 | } | |
441 | 434 | ||
442 | 435 | ||
443 | 436 | ||
444 | - | @Callable( | |
437 | + | @Callable(ba) | |
445 | 438 | func cancelVote (C,D) = { | |
446 | 439 | let A = $Tuple2(C, D) | |
447 | 440 | let i = valueOrElse(getInteger(this, j), 0) | |
448 | - | let | |
449 | - | let | |
450 | - | let | |
451 | - | let | |
452 | - | let | |
453 | - | let | |
454 | - | let | |
455 | - | let | |
456 | - | let | |
441 | + | let bq = ad(this, x(i)) | |
442 | + | let bk = ad(this, f) | |
443 | + | let br = (bq + bk) | |
444 | + | let bs = getInteger(this, q) | |
445 | + | let bt = valueOrElse(getInteger(this, E(ba.caller, i)), 0) | |
446 | + | let bu = valueOrElse(getInteger(this, G(A, ba.caller, i)), 0) | |
447 | + | let bv = valueOrElse(getInteger(this, I(A, i)), 0) | |
448 | + | let bw = valueOrElse(getInteger(this, O(i)), 0) | |
449 | + | let bl = [if ((getBoolean(z(A)) != unit)) | |
457 | 450 | then true | |
458 | - | else T("invalid assets"), if (( | |
451 | + | else T("invalid assets"), if ((br > height)) | |
459 | 452 | then true | |
460 | - | else T("invalid height"), if (( | |
453 | + | else T("invalid height"), if ((bs == unit)) | |
461 | 454 | then true | |
462 | - | else T("finalization in progress"), if (( | |
455 | + | else T("finalization in progress"), if ((bu > 0)) | |
463 | 456 | then true | |
464 | 457 | else T("no vote")] | |
465 | - | if (( | |
458 | + | if ((bl == bl)) | |
466 | 459 | then { | |
467 | - | let | |
468 | - | let Q = toString( | |
469 | - | $Tuple2(([IntegerEntry(E( | |
460 | + | let bB = aC(A) | |
461 | + | let Q = toString(ba.caller) | |
462 | + | $Tuple2(([IntegerEntry(E(ba.caller, i), max([(bt - bu), 0])), DeleteEntry(G(A, ba.caller, i)), IntegerEntry(I(A, i), (bv - bu)), IntegerEntry(O(i), (bw - bu))] ++ aS(bB, Q)), unit) | |
470 | 463 | } | |
471 | 464 | else throw("Strict value is not equal to itself.") | |
472 | 465 | } | |
473 | 466 | ||
474 | 467 | ||
475 | 468 | ||
476 | - | @Callable( | |
477 | - | func setEpochLength ( | |
478 | - | let | |
469 | + | @Callable(ba) | |
470 | + | func setEpochLength (bD) = { | |
471 | + | let bl = [bc(ba), if ((bD > 0)) | |
479 | 472 | then true | |
480 | 473 | else T("invalid epoch length")] | |
481 | - | if (( | |
482 | - | then $Tuple2([IntegerEntry(g, | |
474 | + | if ((bl == bl)) | |
475 | + | then $Tuple2([IntegerEntry(g, bD)], unit) | |
483 | 476 | else throw("Strict value is not equal to itself.") | |
484 | 477 | } | |
485 | 478 | ||
486 | 479 | ||
487 | 480 | ||
488 | - | @Callable( | |
489 | - | func setMaxDepth ( | |
490 | - | let | |
481 | + | @Callable(ba) | |
482 | + | func setMaxDepth (bE) = { | |
483 | + | let bl = [bc(ba), if ((bE > 0)) | |
491 | 484 | then true | |
492 | 485 | else T("invalid max depth")] | |
493 | - | if (( | |
494 | - | then $Tuple2([IntegerEntry(k, | |
486 | + | if ((bl == bl)) | |
487 | + | then $Tuple2([IntegerEntry(k, bE)], unit) | |
495 | 488 | else throw("Strict value is not equal to itself.") | |
496 | 489 | } | |
497 | 490 | ||
498 | 491 | ||
499 | 492 | ||
500 | - | @Callable( | |
501 | - | func processVoteINTERNAL ( | |
502 | - | let | |
503 | - | if (( | |
493 | + | @Callable(ba) | |
494 | + | func processVoteINTERNAL (bF,Q) = { | |
495 | + | let bG = bd(ba) | |
496 | + | if ((bG == bG)) | |
504 | 497 | then { | |
505 | - | let | |
498 | + | let be = valueOrErrorMessage(addressFromString(Q), R(("processVoteINTERNAL: invalid user address " + Q))) | |
506 | 499 | let i = ad(this, j) | |
507 | - | let | |
508 | - | let | |
509 | - | let | |
510 | - | let | |
511 | - | let | |
512 | - | let | |
513 | - | let | |
514 | - | let | |
500 | + | let bH = (i - 1) | |
501 | + | let bk = ad(this, f) | |
502 | + | let bq = ad(this, x(i)) | |
503 | + | let br = (bq + bk) | |
504 | + | let bI = ad(this, x(bH)) | |
505 | + | let bJ = ad(this, h(bH)) | |
506 | + | let bK = (bI + bJ) | |
507 | + | let bL = if ((bH >= 0)) | |
515 | 508 | then true | |
516 | 509 | else T("processVoteINTERNAL: invalid previous epoch") | |
517 | - | if (( | |
510 | + | if ((bL == bL)) | |
518 | 511 | then { | |
519 | - | let A = af( | |
520 | - | let | |
521 | - | let C = | |
522 | - | let D = | |
523 | - | let | |
524 | - | let | |
525 | - | let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, | |
512 | + | let A = af(bF) | |
513 | + | let bM = A | |
514 | + | let C = bM._1 | |
515 | + | let D = bM._2 | |
516 | + | let bA = az(A) | |
517 | + | let bx = { | |
518 | + | let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, br], nil) | |
526 | 519 | if ($isInstanceOf(ac, "Int")) | |
527 | 520 | then ac | |
528 | 521 | else throw(($getType(ac) + " couldn't be cast to Int")) | |
529 | 522 | } | |
530 | - | let | |
531 | - | let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, | |
523 | + | let bN = { | |
524 | + | let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, bK], nil) | |
532 | 525 | if ($isInstanceOf(ac, "Int")) | |
533 | 526 | then ac | |
534 | 527 | else throw(($getType(ac) + " couldn't be cast to Int")) | |
535 | 528 | } | |
536 | - | let | |
537 | - | let | |
538 | - | let | |
539 | - | let | |
529 | + | let bw = valueOrElse(getInteger(O(i)), 0) | |
530 | + | let bO = valueOrElse(getInteger(I(A, i)), 0) | |
531 | + | let bP = valueOrErrorMessage(getInteger(G(A, be, bH)), R((((("processVoteINTERNAL " + bF) + " ") + Q) + ": no previous vote"))) | |
532 | + | let bt = valueOrElse(getInteger(this, E(be, i)), 0) | |
540 | 533 | let L = ao(C, D) | |
541 | - | let | |
542 | - | let | |
543 | - | let | |
544 | - | let | |
534 | + | let bQ = valueOrElse(getInteger(K(L, bH)), 0) | |
535 | + | let bj = addressFromStringValue(ab(this, p)) | |
536 | + | let bR = valueOrElse(getInteger(bj, P(L, Q)), 0) | |
537 | + | let bS = if ((bR == 0)) | |
545 | 538 | then nil | |
546 | - | else [IntegerEntry(K(L, | |
547 | - | let | |
548 | - | then fraction( | |
539 | + | else [IntegerEntry(K(L, bH), (bQ + bP))] | |
540 | + | let bz = if ((bN > 0)) | |
541 | + | then fraction(bP, bx, bN) | |
549 | 542 | else 0 | |
550 | - | let | |
551 | - | then | |
543 | + | let bT = if (if ((bz > 0)) | |
544 | + | then bA | |
552 | 545 | else false) | |
553 | - | then [IntegerEntry(G(A, | |
554 | - | else | |
555 | - | $Tuple2(( | |
546 | + | then [IntegerEntry(G(A, be, i), bz), IntegerEntry(O(i), (bw + bz)), IntegerEntry(I(A, i), (bO + bz)), IntegerEntry(E(be, i), (bt + bz))] | |
547 | + | else aS(aC(A), Q) | |
548 | + | $Tuple2((bT ++ bS), unit) | |
556 | 549 | } | |
557 | 550 | else throw("Strict value is not equal to itself.") | |
558 | 551 | } | |
559 | 552 | else throw("Strict value is not equal to itself.") | |
560 | 553 | } | |
561 | 554 | ||
562 | 555 | ||
563 | 556 | ||
564 | - | @Callable( | |
565 | - | func processPoolINTERNAL ( | |
566 | - | let | |
567 | - | if (( | |
557 | + | @Callable(ba) | |
558 | + | func processPoolINTERNAL (bF,bU) = { | |
559 | + | let bG = bd(ba) | |
560 | + | if ((bG == bG)) | |
568 | 561 | then { | |
569 | - | let | |
570 | - | let | |
571 | - | if ( | |
572 | - | then | |
573 | - | else ( | |
562 | + | let bV = { | |
563 | + | let bW = ad(this, j) | |
564 | + | if (bU) | |
565 | + | then bW | |
566 | + | else (bW - 1) | |
574 | 567 | } | |
575 | - | let | |
568 | + | let bL = if ((bV >= 0)) | |
576 | 569 | then true | |
577 | 570 | else T("processPoolINTERNAL: invalid target epoch") | |
578 | - | if (( | |
571 | + | if ((bL == bL)) | |
579 | 572 | then { | |
580 | - | let A = af( | |
581 | - | let | |
582 | - | let C = | |
583 | - | let D = | |
584 | - | let | |
573 | + | let A = af(bF) | |
574 | + | let bX = A | |
575 | + | let C = bX._1 | |
576 | + | let D = bX._2 | |
577 | + | let bj = addressFromStringValue(ab(this, p)) | |
585 | 578 | let ay = ao(C, D) | |
586 | - | let ca = { | |
587 | - | let ac = invoke(bl, "usersListTraversal", [ay], nil) | |
588 | - | if ($isInstanceOf(ac, "Boolean")) | |
589 | - | then ac | |
590 | - | else throw(($getType(ac) + " couldn't be cast to Boolean")) | |
591 | - | } | |
592 | - | if ((ca == ca)) | |
593 | - | then if (ca) | |
594 | - | then $Tuple2(nil, true) | |
595 | - | else { | |
596 | - | let bC = az(A) | |
597 | - | let by = valueOrElse(getInteger(this, O(bX)), 0) | |
598 | - | let bQ = valueOrElse(getInteger(this, I(A, bX)), 0) | |
599 | - | let cb = if (if ((by == 0)) | |
600 | - | then true | |
601 | - | else !(bC)) | |
602 | - | then 0 | |
603 | - | else fraction(bQ, b, by) | |
604 | - | let cc = invoke(ah, "modifyWeight", [ay, cb], nil) | |
605 | - | if ((cc == cc)) | |
606 | - | then { | |
607 | - | let cd = if (if (bC) | |
608 | - | then true | |
609 | - | else bW) | |
610 | - | then nil | |
611 | - | else ([DeleteEntry(z(A))] ++ aU(aD, bH)) | |
612 | - | $Tuple2(([IntegerEntry(M(A, bX), cb)] ++ cd), false) | |
613 | - | } | |
614 | - | else throw("Strict value is not equal to itself.") | |
615 | - | } | |
579 | + | let bA = az(A) | |
580 | + | let bw = valueOrElse(getInteger(this, O(bV)), 0) | |
581 | + | let bO = valueOrElse(getInteger(this, I(A, bV)), 0) | |
582 | + | let bY = if (if ((bw == 0)) | |
583 | + | then true | |
584 | + | else !(bA)) | |
585 | + | then 0 | |
586 | + | else fraction(bO, b, bw) | |
587 | + | let bZ = invoke(ah, "modifyWeight", [ay, bY], nil) | |
588 | + | if ((bZ == bZ)) | |
589 | + | then { | |
590 | + | let ca = if (if (bA) | |
591 | + | then true | |
592 | + | else bU) | |
593 | + | then nil | |
594 | + | else ([DeleteEntry(z(A))] ++ aS(aB, bF)) | |
595 | + | $Tuple2(([IntegerEntry(M(A, bV), bY)] ++ ca), false) | |
596 | + | } | |
616 | 597 | else throw("Strict value is not equal to itself.") | |
617 | 598 | } | |
618 | 599 | else throw("Strict value is not equal to itself.") | |
619 | 600 | } | |
620 | 601 | else throw("Strict value is not equal to itself.") | |
621 | 602 | } | |
622 | 603 | ||
623 | 604 | ||
624 | 605 | ||
625 | - | @Callable( | |
606 | + | @Callable(ba) | |
626 | 607 | func finalizeHelper () = { | |
627 | - | let | |
608 | + | let bU = valueOrElse(getBoolean(w), false) | |
628 | 609 | let i = valueOrElse(getInteger(this, j), 0) | |
629 | - | let | |
630 | - | let | |
631 | - | let | |
632 | - | let | |
633 | - | let | |
634 | - | if (if (if ((height >= | |
635 | - | then ( | |
610 | + | let cb = (i - 1) | |
611 | + | let bq = ad(this, x(i)) | |
612 | + | let bk = ad(this, f) | |
613 | + | let br = (bq + bk) | |
614 | + | let bs = getInteger(this, q) | |
615 | + | if (if (if ((height >= br)) | |
616 | + | then (bs == unit) | |
636 | 617 | else false) | |
637 | - | then !( | |
618 | + | then !(bU) | |
638 | 619 | else false) | |
639 | 620 | then { | |
640 | - | let | |
641 | - | let | |
642 | - | let | |
643 | - | let Y = | |
621 | + | let cc = (i + 1) | |
622 | + | let cd = getInteger(this, g) | |
623 | + | let ce = { | |
624 | + | let Y = cd | |
644 | 625 | if ($isInstanceOf(Y, "Int")) | |
645 | 626 | then { | |
646 | - | let | |
647 | - | [IntegerEntry(f, | |
627 | + | let bD = Y | |
628 | + | [IntegerEntry(f, bD), DeleteEntry(g)] | |
648 | 629 | } | |
649 | 630 | else if ($isInstanceOf(Y, "Unit")) | |
650 | 631 | then nil | |
651 | 632 | else throw("Match error") | |
652 | 633 | } | |
653 | - | $Tuple2(([IntegerEntry(x( | |
634 | + | $Tuple2(([IntegerEntry(x(cc), height), IntegerEntry(t, height), IntegerEntry(j, cc), IntegerEntry(q, d), IntegerEntry(h(i), bk)] ++ ce), true) | |
654 | 635 | } | |
655 | - | else if (if ( | |
656 | - | then ( | |
636 | + | else if (if (bU) | |
637 | + | then (bs == unit) | |
657 | 638 | else false) | |
658 | 639 | then $Tuple2([IntegerEntry(q, e)], true) | |
659 | - | else if (( | |
640 | + | else if ((bs == unit)) | |
660 | 641 | then $Tuple2(nil, false) | |
661 | - | else if (( | |
642 | + | else if ((bs == d)) | |
662 | 643 | then { | |
663 | - | let | |
664 | - | let | |
665 | - | let Y = | |
644 | + | let cf = getString(r) | |
645 | + | let cg = getString(s) | |
646 | + | let Y = cf | |
666 | 647 | if ($isInstanceOf(Y, "Unit")) | |
667 | 648 | then { | |
668 | - | let | |
669 | - | if ($isInstanceOf( | |
649 | + | let ch = getString(aE(aB)) | |
650 | + | if ($isInstanceOf(ch, "Unit")) | |
670 | 651 | then $Tuple2([IntegerEntry(q, e), DeleteEntry(r), DeleteEntry(s)], true) | |
671 | - | else if ($isInstanceOf( | |
652 | + | else if ($isInstanceOf(ch, "String")) | |
672 | 653 | then { | |
673 | - | let | |
674 | - | $Tuple2([StringEntry(r, | |
654 | + | let ci = ch | |
655 | + | $Tuple2([StringEntry(r, ci)], true) | |
675 | 656 | } | |
676 | 657 | else throw("Match error") | |
677 | 658 | } | |
678 | 659 | else if ($isInstanceOf(Y, "String")) | |
679 | 660 | then { | |
680 | - | let | |
681 | - | let A = af( | |
682 | - | let | |
683 | - | let | |
684 | - | if ($isInstanceOf( | |
685 | - | then getString( | |
686 | - | else if ($isInstanceOf( | |
661 | + | let bF = Y | |
662 | + | let A = af(bF) | |
663 | + | let cj = { | |
664 | + | let ch = cg | |
665 | + | if ($isInstanceOf(ch, "Unit")) | |
666 | + | then getString(aE(aC(A))) | |
667 | + | else if ($isInstanceOf(ch, "String")) | |
687 | 668 | then { | |
688 | - | let | |
689 | - | let | |
690 | - | if (( | |
669 | + | let ck = ch | |
670 | + | let cl = getString(aK(aC(A), ck)) | |
671 | + | if ((cl == cl)) | |
691 | 672 | then { | |
692 | - | let | |
693 | - | if (( | |
694 | - | then | |
673 | + | let cm = invoke(this, "processVoteINTERNAL", [bF, ck], nil) | |
674 | + | if ((cm == cm)) | |
675 | + | then cl | |
695 | 676 | else throw("Strict value is not equal to itself.") | |
696 | 677 | } | |
697 | 678 | else throw("Strict value is not equal to itself.") | |
698 | 679 | } | |
699 | 680 | else throw("Match error") | |
700 | 681 | } | |
701 | - | let | |
702 | - | if ($isInstanceOf( | |
682 | + | let ch = cj | |
683 | + | if ($isInstanceOf(ch, "Unit")) | |
703 | 684 | then { | |
704 | - | let | |
705 | - | let | |
706 | - | if ($isInstanceOf( | |
685 | + | let cn = getString(aK(aB, bF)) | |
686 | + | let co = cn | |
687 | + | if ($isInstanceOf(co, "Unit")) | |
707 | 688 | then $Tuple2([IntegerEntry(q, e), DeleteEntry(r), DeleteEntry(s)], true) | |
708 | - | else if ($isInstanceOf( | |
689 | + | else if ($isInstanceOf(co, "String")) | |
709 | 690 | then { | |
710 | - | let | |
711 | - | $Tuple2([StringEntry(r, | |
691 | + | let aW = co | |
692 | + | $Tuple2([StringEntry(r, aW), DeleteEntry(s)], true) | |
712 | 693 | } | |
713 | 694 | else throw("Match error") | |
714 | 695 | } | |
715 | - | else if ($isInstanceOf( | |
696 | + | else if ($isInstanceOf(ch, "String")) | |
716 | 697 | then { | |
717 | - | let | |
718 | - | $Tuple2([StringEntry(s, | |
698 | + | let cp = ch | |
699 | + | $Tuple2([StringEntry(s, cp)], true) | |
719 | 700 | } | |
720 | 701 | else throw("Match error") | |
721 | 702 | } | |
722 | 703 | else throw("Match error") | |
723 | 704 | } | |
724 | - | else if (( | |
705 | + | else if ((bs == e)) | |
725 | 706 | then { | |
726 | - | let | |
727 | - | let Y = | |
707 | + | let cf = getString(r) | |
708 | + | let Y = cf | |
728 | 709 | if ($isInstanceOf(Y, "Unit")) | |
729 | 710 | then { | |
730 | - | let | |
731 | - | if ($isInstanceOf( | |
711 | + | let ch = getString(aE(aB)) | |
712 | + | if ($isInstanceOf(ch, "Unit")) | |
732 | 713 | then { | |
733 | - | let | |
714 | + | let bT = if (bU) | |
734 | 715 | then [DeleteEntry(q), DeleteEntry(w)] | |
735 | - | else [DeleteEntry(q), BooleanEntry(y(ce), true), IntegerEntry(u, i), IntegerEntry(v, bs)] | |
736 | - | let ct = aB() | |
737 | - | if ((ct == ct)) | |
738 | - | then $Tuple2(bV, true) | |
739 | - | else throw("Strict value is not equal to itself.") | |
716 | + | else [DeleteEntry(q), BooleanEntry(y(cb), true), IntegerEntry(u, i), IntegerEntry(v, bq)] | |
717 | + | $Tuple2(bT, true) | |
740 | 718 | } | |
741 | - | else if ($isInstanceOf( | |
719 | + | else if ($isInstanceOf(ch, "String")) | |
742 | 720 | then { | |
743 | - | let | |
744 | - | $Tuple2([StringEntry(r, | |
721 | + | let cq = ch | |
722 | + | $Tuple2([StringEntry(r, cq)], true) | |
745 | 723 | } | |
746 | 724 | else throw("Match error") | |
747 | 725 | } | |
748 | 726 | else if ($isInstanceOf(Y, "String")) | |
749 | 727 | then { | |
750 | - | let | |
751 | - | let | |
752 | - | if (( | |
728 | + | let bF = Y | |
729 | + | let cn = getString(aK(aB, bF)) | |
730 | + | if ((cn == cn)) | |
753 | 731 | then { | |
754 | - | let | |
755 | - | let ac = invoke(this, "processPoolINTERNAL", [ | |
732 | + | let cr = { | |
733 | + | let ac = invoke(this, "processPoolINTERNAL", [bF, bU], nil) | |
756 | 734 | if ($isInstanceOf(ac, "Boolean")) | |
757 | 735 | then ac | |
758 | 736 | else throw(($getType(ac) + " couldn't be cast to Boolean")) | |
759 | 737 | } | |
760 | - | if (( | |
761 | - | then if ( | |
738 | + | if ((cr == cr)) | |
739 | + | then if (cr) | |
762 | 740 | then $Tuple2(nil, true) | |
763 | 741 | else { | |
764 | - | let | |
765 | - | if ($isInstanceOf( | |
742 | + | let ch = cn | |
743 | + | if ($isInstanceOf(ch, "Unit")) | |
766 | 744 | then { | |
767 | - | let | |
745 | + | let bT = if (bU) | |
768 | 746 | then [DeleteEntry(q), DeleteEntry(w), DeleteEntry(r)] | |
769 | - | else [DeleteEntry(q), BooleanEntry(y(ce), true), IntegerEntry(u, i), IntegerEntry(v, bs), DeleteEntry(r)] | |
770 | - | let ct = aB() | |
771 | - | if ((ct == ct)) | |
772 | - | then $Tuple2(bV, true) | |
773 | - | else throw("Strict value is not equal to itself.") | |
747 | + | else [DeleteEntry(q), BooleanEntry(y(cb), true), IntegerEntry(u, i), IntegerEntry(v, bq), DeleteEntry(r)] | |
748 | + | $Tuple2(bT, true) | |
774 | 749 | } | |
775 | - | else if ($isInstanceOf( | |
750 | + | else if ($isInstanceOf(ch, "String")) | |
776 | 751 | then { | |
777 | - | let | |
778 | - | $Tuple2([StringEntry(r, | |
752 | + | let cq = ch | |
753 | + | $Tuple2([StringEntry(r, cq)], true) | |
779 | 754 | } | |
780 | 755 | else throw("Match error") | |
781 | 756 | } | |
782 | 757 | else throw("Strict value is not equal to itself.") | |
783 | 758 | } | |
784 | 759 | else throw("Strict value is not equal to itself.") | |
785 | 760 | } | |
786 | 761 | else throw("Match error") | |
787 | 762 | } | |
788 | 763 | else T("finalization is broken") | |
789 | 764 | } | |
790 | 765 | ||
791 | 766 | ||
792 | 767 | ||
793 | - | @Callable( | |
794 | - | func finalizeWrapper ( | |
795 | - | let | |
796 | - | let | |
768 | + | @Callable(ba) | |
769 | + | func finalizeWrapper (cs) = { | |
770 | + | let ct = addressFromStringValue(getStringValue(this, m)) | |
771 | + | let cu = { | |
797 | 772 | let ac = invoke(this, "finalizeHelper", nil, nil) | |
798 | 773 | if ($isInstanceOf(ac, "Boolean")) | |
799 | 774 | then ac | |
800 | 775 | else throw(($getType(ac) + " couldn't be cast to Boolean")) | |
801 | 776 | } | |
802 | - | if (( | |
803 | - | then if (!( | |
804 | - | then if (( | |
777 | + | if ((cu == cu)) | |
778 | + | then if (!(cu)) | |
779 | + | then if ((cs == 0)) | |
805 | 780 | then T("Current voting is not over yet") | |
806 | 781 | else { | |
807 | - | let | |
808 | - | if (( | |
782 | + | let cv = invoke(ct, "finalize", nil, nil) | |
783 | + | if ((cv == cv)) | |
809 | 784 | then $Tuple2(nil, unit) | |
810 | 785 | else throw("Strict value is not equal to itself.") | |
811 | 786 | } | |
812 | 787 | else { | |
813 | - | let | |
814 | - | if (( | |
788 | + | let cw = valueOrElse(getInteger(this, k), c) | |
789 | + | if ((cw > cs)) | |
815 | 790 | then { | |
816 | - | let | |
817 | - | if (( | |
791 | + | let cv = invoke(this, "finalizeWrapper", [(cs + 1)], nil) | |
792 | + | if ((cv == cv)) | |
818 | 793 | then $Tuple2(nil, unit) | |
819 | 794 | else throw("Strict value is not equal to itself.") | |
820 | 795 | } | |
821 | 796 | else $Tuple2(nil, unit) | |
822 | 797 | } | |
823 | 798 | else throw("Strict value is not equal to itself.") | |
824 | 799 | } | |
825 | 800 | ||
826 | 801 | ||
827 | 802 | ||
828 | - | @Callable( | |
803 | + | @Callable(ba) | |
829 | 804 | func finalize () = { | |
830 | - | let | |
831 | - | if (( | |
805 | + | let cv = invoke(this, "finalizeWrapper", [0], nil) | |
806 | + | if ((cv == cv)) | |
832 | 807 | then $Tuple2(nil, unit) | |
833 | 808 | else throw("Strict value is not equal to itself.") | |
834 | 809 | } | |
835 | 810 | ||
836 | 811 | ||
837 | 812 | ||
838 | - | @Callable( | |
839 | - | func containsNodeREADONLY ( | |
813 | + | @Callable(ba) | |
814 | + | func containsNodeREADONLY (aF,aJ) = $Tuple2(nil, aL(aF, aJ)) | |
840 | 815 | ||
841 | 816 | ||
842 | 817 | ||
843 | - | @Callable( | |
844 | - | func insertNode ( | |
845 | - | let | |
846 | - | if (( | |
847 | - | then $Tuple2( | |
818 | + | @Callable(ba) | |
819 | + | func insertNode (aF,aJ) = { | |
820 | + | let bG = bc(ba) | |
821 | + | if ((bG == bG)) | |
822 | + | then $Tuple2(aP(aF, aJ), unit) | |
848 | 823 | else throw("Strict value is not equal to itself.") | |
849 | 824 | } | |
850 | 825 | ||
851 | 826 | ||
852 | 827 | ||
853 | - | @Callable( | |
854 | - | func deleteNode ( | |
855 | - | let | |
856 | - | if (( | |
857 | - | then $Tuple2( | |
828 | + | @Callable(ba) | |
829 | + | func deleteNode (aF,aJ) = { | |
830 | + | let bG = bc(ba) | |
831 | + | if ((bG == bG)) | |
832 | + | then $Tuple2(aS(aF, aJ), unit) | |
858 | 833 | else throw("Strict value is not equal to itself.") | |
859 | 834 | } | |
860 | 835 | ||
861 | 836 | ||
862 | 837 | ||
863 | - | @Callable( | |
838 | + | @Callable(ba) | |
864 | 839 | func isFinalizationInProgress () = { | |
865 | - | let | |
866 | - | let | |
867 | - | $Tuple2(nil, | |
840 | + | let bs = getInteger(this, q) | |
841 | + | let cx = (bs != unit) | |
842 | + | $Tuple2(nil, cx) | |
868 | 843 | } | |
869 | 844 | ||
870 | 845 | ||
871 | 846 | ||
872 | - | @Callable( | |
847 | + | @Callable(ba) | |
873 | 848 | func deletePool (C,D) = { | |
874 | - | let | |
849 | + | let bG = if (if ((ba.caller == ah)) | |
875 | 850 | then true | |
876 | - | else | |
851 | + | else bc(ba)) | |
877 | 852 | then true | |
878 | 853 | else T("Permission denied") | |
879 | - | if (( | |
854 | + | if ((bG == bG)) | |
880 | 855 | then { | |
881 | - | let | |
856 | + | let aF = "pools" | |
882 | 857 | let A = $Tuple2(C, D) | |
883 | - | let | |
884 | - | let | |
885 | - | then | |
858 | + | let aJ = makeString([C, D], a) | |
859 | + | let bT = if (aL(aF, aJ)) | |
860 | + | then aS(aF, aJ) | |
886 | 861 | else nil | |
887 | - | ([DeleteEntry(z(A))] ++ | |
862 | + | ([DeleteEntry(z(A))] ++ bT) | |
888 | 863 | } | |
889 | 864 | else throw("Strict value is not equal to itself.") | |
890 | 865 | } | |
891 | 866 | ||
892 | 867 | ||
893 | - | @Verifier(cB) | |
894 | - | func cC () = { | |
895 | - | let cD = { | |
896 | - | let Y = aZ() | |
868 | + | ||
869 | + | @Callable(ba) | |
870 | + | func getLockedGwxAmount (Q) = { | |
871 | + | let be = valueOrErrorMessage(addressFromString(Q), R("invalid user address")) | |
872 | + | let i = valueOrElse(getInteger(this, j), 0) | |
873 | + | let cy = { | |
874 | + | let Y = getInteger(this, E(be, i)) | |
875 | + | if ($isInstanceOf(Y, "Unit")) | |
876 | + | then 0 | |
877 | + | else if ($isInstanceOf(Y, "Int")) | |
878 | + | then { | |
879 | + | let cz = Y | |
880 | + | cz | |
881 | + | } | |
882 | + | else throw("Match error") | |
883 | + | } | |
884 | + | $Tuple2(nil, cy) | |
885 | + | } | |
886 | + | ||
887 | + | ||
888 | + | @Verifier(cA) | |
889 | + | func cB () = { | |
890 | + | let cC = { | |
891 | + | let Y = aX() | |
897 | 892 | if ($isInstanceOf(Y, "ByteVector")) | |
898 | 893 | then { | |
899 | - | let | |
900 | - | | |
894 | + | let bb = Y | |
895 | + | bb | |
901 | 896 | } | |
902 | 897 | else if ($isInstanceOf(Y, "Unit")) | |
903 | - | then | |
898 | + | then cA.senderPublicKey | |
904 | 899 | else throw("Match error") | |
905 | 900 | } | |
906 | - | sigVerify( | |
901 | + | sigVerify(cA.bodyBytes, cA.proofs[0], cC) | |
907 | 902 | } | |
908 | 903 |
github/deemru/w8io/169f3d6 272.09 ms ◑