tx · 8XmqysgwQm94Qkr29QqrJWTciKCykZ6tVgp5xWu78qjH

3N8WDKbqGox5Eky326PHHT7rUyrby5MXdmb:  -0.02300000 Waves

2022.06.24 18:23 [2110677] smart account 3N8WDKbqGox5Eky326PHHT7rUyrby5MXdmb > SELF 0.00000000 Waves

{ "type": 13, "id": "8XmqysgwQm94Qkr29QqrJWTciKCykZ6tVgp5xWu78qjH", "fee": 2300000, "feeAssetId": null, "timestamp": 1656084296225, "version": 2, "chainId": 84, "sender": "3N8WDKbqGox5Eky326PHHT7rUyrby5MXdmb", "senderPublicKey": "FWSsBbeCwLVkekWhvNKtX6JkrZiruRybKKVuiS3F4bqN", "proofs": [ "3WFyDPzTrSjJ68pYUupLw3DMqTms9DWok6BewTgemgtprnPgubs171i34kUWGaLjtj1c7yx7qzifckae7UdrqANj" ], "script": "base64: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AAARQnVpbGRpbmdTdGF0dXNLZXkAAAAPZmluaXNoSGVpZ2h0S2V5AAAADXRyYW5zYWN0aW9uSWQEAAAABmNodW5rcwkBAAAAEWdldEFzc2V0VHlwZUxldmVsAAAAAQUAAAAIYXNzZXRTdHIEAAAADHN0ckFzc2V0VHlwZQgFAAAABmNodW5rcwAAAAJfMQQAAAAFbGV2ZWwIBQAAAAZjaHVua3MAAAACXzIEAAAAFGJ1aWxkaW5nRmluaXNoSGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA9maW5pc2hIZWlnaHRLZXkDCQAAZgAAAAIFAAAAFGJ1aWxkaW5nRmluaXNoSGVpZ2h0BQAAAAZoZWlnaHQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAB1CdWlsZGluZyBpcyBub3QgZmluaXNoZWQgeWV0IAkAAaQAAAABCQAAZQAAAAIFAAAAFGJ1aWxkaW5nRmluaXNoSGVpZ2h0BQAAAAZoZWlnaHQCAAAAJyBibG9ja3MgcmVtYWluaW5nLCBpdCB3aWxsIHRha2UgYXJvdW5kIAkAAaQAAAABCQAAZQAAAAIFAAAAFGJ1aWxkaW5nRmluaXNoSGVpZ2h0BQAAAAZoZWlnaHQCAAAACCBtaW51dGVzAwkAAAAAAAACCQABLwAAAAIFAAAADHN0ckFzc2V0VHlwZQAAAAAAAAAABAIAAAAEVEVDSAQAAAAKZGlzY292ZXJlZAkAA/wAAAAECQEAAAAHQWRkcmVzcwAAAAEFAAAADm5hdGlvbnNBZGRyZXNzAgAAABhzZXRUZWNuaG5vbG9neURpc2NvdmVyZWQJAARMAAAAAgUAAAAGY2FsbGVyCQAETAAAAAIFAAAACGFzc2V0U3RyBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAKZGlzY292ZXJlZAYJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAARQnVpbGRpbmdTdGF0dXNLZXkJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAPZmluaXNoSGVpZ2h0S2V5BQAAAANuaWwJAAACAAAAAQIAAAAcZXJyb3IgZGlzY292ZXJpbmcgdGVjaG5vbG9n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QXNzZXRPd25lcktleQAAAAIFAAAADXRyYW5zYWN0aW9uSWQFAAAACGFzc2V0U3RyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAMYWdnckFzc2V0a2V5AgAAAAZfT3duZXIFAAAABmNhbGxlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAMYWdnckFzc2V0a2V5CQAAZAAAAAIFAAAABWNvaW5zBQAAAAphc3NldENvaW5zCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADGFnZ3JBc3NldGtleQIAAAAEX1F0eQkAAGQAAAACBQAAAANxdHkAAAAAAAAAAAEJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAARQnVpbGRpbmdTdGF0dXNLZXkJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAPZmluaXNoSGVpZ2h0S2V5BQAAAANuaWwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACGFzc2V0S2V5BQAAAAphc3NldENvaW5zCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAEUJ1aWxkaW5nU3RhdHVzS2V5CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAD2ZpbmlzaEhlaWdodEtleQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEAAAAPY2hlY2tBc3NldE93bmVyAAAAAgAAAAZjYWxsZXIAAAAIYXNzZXRLZXkEAAAACmFzc2V0T3duZXIJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAWZ2V0QXNzZXRPd25lcktleVN0cmluZwAAAAEFAAAACGFzc2V0S2V5CQAAAAAAAAIFAAAACmFzc2V0T3duZXIFAAAABmNhbGxlcgEAAAAVaXNOYXRpb25SZXNlcnZlZEFzc2V0AAAAAgAAAAROYW1lAAAABUxldmVsBAAAAAFrCQEAAAAIZ2V0QUxLZXkAAAACBQAAAAROYW1lBQAAAAVMZXZlbAkBAAAAEWNvbmZUcnlHZXRCb29sZWFuAAAAAQkAASwA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aGUgYXNzZXQEAAAABmNodW5rcwkBAAAAEWdldEFzc2V0VHlwZUxldmVsAAAAAQUAAAAMU2FjcmlmaWNlS2V5AwMJAQAAAAIhPQAAAAIFAAAACGFzc2V0U2FjCAUAAAAGY2h1bmtzAAAAAl8xBgkBAAAAAiE9AAAAAgUAAAALYXNzZXRTYWNsdmwIBQAAAAZjaHVua3MAAAACXzIJAAACAAAAAQIAAAAudGhlIHNhY3JpZmljZUFzc2V0IGhhcyB0aGUgd3JvbmcgdHlwZSBvciBsZXZlbAYBAAAAGUNoZWNrQXNzZXRCdWlsZGFibGVOYXRpb24AAAAEAAAABE5hbWUAAAAFTGV2ZWwAAAAJTmF0aW9uS2V5AAAADFNhY3JpZmljZUtleQQAAAAHY25mZ0tleQkBAAAACGdldEFMS2V5AAAAAgUAAAAETmFtZQUAAAAFTGV2ZWwEAAAAA3RlYwkBAAAAEGNvbmZUcnlHZXRTdHJpbmcAAAABCQABLAAAAAIFAAAAB2NuZmdLZXkCAAAAFl9UZWNuaG9sb2d5X2Rpc2NvdmVyZWQDCQEAAAACIT0AAAACBQAAAAN0ZWMCAAAAAAMJAQAAABRuYXRpb25zVHJ5R2V0Qm9vbGVhbgAAAAEJAAEsAAAAAgkAASwAAAACBQAAAAlOYXRpb25LZXkCAAAAAV8FAAAAA3RlYwkBAAAAHENoZWNrQXNzZXRCdWlsZGFibGVTYWNyaWZpY2UAAAADBQAAAAdjbmZnS2V5BQAAAAlOYXRpb25LZXkFAAAADFNhY3JpZmljZUtleQcJAQAAABxDaGVja0Fzc2V0QnVpbGRhYmxlU2FjcmlmaWNlAAAAAwUAAAAHY25mZ0tleQUAAAAJTmF0aW9uS2V5BQAAAAxTYWNyaWZpY2VLZXkBAAAAF0NoZWNrQXNzZXRCdWlsZGFibGVVc2VyAAAABAAAAAROYW1lAAAABUxldmVsAAAABmNhbGxlcgAAAAxTYWNyaWZpY2VLZXkEAAAABmNuZktleQkBAAAACGdldEFMS2V5AAAAAgUAAAAETmFtZQUAAAAFTGV2ZWwEAAAACG5hdGlvbklkCQEAAAAUbmF0aW9uc1RyeUdldEludGVnZXIAAAABBQAAAAZjYWxsZXIDCQAAAAAAAAIFAAAACG5hdGlvbklkAAAAAAAAAAAABwQAAAADdGVjCQEAAAAQY29uZlRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgUAAAAGY25mS2V5AgAAABZfVGVjbmhvbG9neV9kaXNjb3ZlcmVkAwkBAAAAAiE9AAAAAgUAAAADdGVjAgAAAAAEAAAACU5hdGlvbktleQkBAAAAE25hdGlvbnNUcnlHZXRTdHJpbmcAAAABCQABpAAAAAEFAAAACG5hdGlvbklkAwkBAAAAFG5hdGlvbnNUcnlHZXRCb29sZWFuAAAAAQkAASwAAAACCQABLAAAAAIFAAAACU5hdGlvbktleQIAAAABXwUAAAADdGVjCQEAAAAcQ2hlY2tBc3NldEJ1aWxkYWJsZVNhY3JpZmljZQAAAAMFAAAABmNuZktleQUAAAAGY2FsbGVyBQAAAAxTYWNyaWZpY2VLZXkHCQEAAAAcQ2hlY2tBc3NldEJ1aWxkYWJsZVNhY3JpZmljZQAAAAMFAAAABmNuZktleQUAAAAGY2FsbGVyBQAAAAxTYWNyaWZpY2VLZXkBAAAAE0NoZWNrQXNzZXRCdWlsZGFibGUAAAAFAAAABE5hbWUAAAAFTGV2ZWwAAAAGQ2FsbGVyAAAACU5hdGlvbktleQAAAAxTYWNyaWZpY2VLZXkDCQEAAAACIT0AAAACBQAAAAlOYXRpb25LZXkCAAAAAAkBAAAAGUNoZWNrQXNzZXRCdWlsZGFibGVOYXRpb24AAAAEBQAAAAROYW1lBQAAAAVMZXZlbAUAAAAJTmF0aW9uS2V5BQAAAAxTYWNyaWZpY2VLZXkJAQAAABdDaGVja0Fzc2V0QnVpbGRhYmxlVXNlcgAAAAQFAAAABE5hbWUFAAAABUxldmVsBQAAAAZDYWxsZXIFAAAADFNhY3JpZmljZUtleQAAAAkAAAABaQEAAAAKU3RhcnRCdWlsZAAAAAQAAAAMc3RyQXNzZXRUeXBlAAAABUxldmVsAAAACU5hdGlvbktleQAAAAxTYWNyaWZpY2VLZXkDCQEAAAABIQAAAAEJAQAAABNDaGVja0Fzc2V0QnVpbGRhYmxlAAAABQUAAAAMc3RyQXNzZXRUeXBlBQAAAAVMZXZlbAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAACU5hdGlvbktleQUAAAAMU2FjcmlmaWNlS2V5CQAAAgAAAAECAAAAGllvdSBjYW5ub3QgYnVpbGQgdGhpcyBJdGVtBAAAAAdjbmZnS2V5CQEAAAAIZ2V0QUxLZXkAAAACBQAAAAxzdHJBc3NldFR5cGUFAAAABUxldmVsBAAAABBkZWxheUZvckJ1aWxkaW5nCQEAAAARY29uZlRyeUdldEludGVnZXIAAAABCQABLAAAAAIFAAAAB2NuZmdLZXkCAAAACl9CdWlsZFRpbWUEAAAADmFzc2V0QnVpbGRDb3N0CQEAAAARY29uZlRyeUdldEludGVnZXIAAAABCQABLAAAAAIFAAAAB2NuZmdLZXkCAAAABV9Db3N0BAAAAA1Ub0FkbWluV2FsbGV0CQAAaQAAAAIJAABoAAAAAgUAAAAOYXNzZXRCdWlsZENvc3QAAAAAAAAAAAUAAAAAAAAAAGQEAAAAE1RvR2FtZVJld2FyZHNXYWxsZXQJAABpAAAAAgkAAGgAAAACBQAAAA5hc3NldEJ1aWxkQ29zdAAAAAAAAAAACgAAAAAAAAAAZAQAAAAWVG9TdGFraW5nUmV3YXJkc1dhbGxldAkAAGkAAAACCQAAaAAAAAIFAAAADmFzc2V0QnVpbGRDb3N0AAAAAAAAAABBAAAAAAAAAABkBAAAAA1Vbml0U3Rha2VTaGVnCQAAZQAAAAIJAABlAAAAAgkAAGUAAAACBQAAAA5hc3NldEJ1aWxkQ29zdAUAAAANVG9BZG1pbldhbGxldAUAAAATVG9HYW1lUmV3YXJkc1dhbGxldAUAAAAWVG9TdGFraW5nUmV3YXJkc1dhbGxldAMJAQAAABVpc05hdGlvblJlc2VydmVkQXNzZXQAAAACBQAAAAxzdHJBc3NldFR5cGUFAAAABUxldmVsAwMJAQAAAAEhAAAAAQkBAAAAD2NoZWNrQXNzZXRPd25lcgAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAlOYXRpb25LZXkJAQAAAAEhAAAAAQkBAAAACmNoZWNrQWRtaW4AAAABCAUAAAABaQAAAAZjYWxsZXIHCQAAAgAAAAECAAAAI1lvdSBhcmUgbm90IHRoZSBvd25lciBvZiB0aGUgbmF0aW9uBAAAAApuYXRpb25zaGVnCQEAAAAVdHJlYXN1cnlUcnlHZXRJbnRlZ2VyAAAAAQkBAAAADmdldFRyZWFzdXJ5S2V5AAAA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CQEAAAAHQWRkcmVzcwAAAAEFAAAAD3RyZWFzdXJ5QWRkcmVzcwIAAAAHRGVwb3NpdAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAApzaGlueXdnZ2lkBQAAAA1Vbml0U3Rha2VTaGVnBQAAAANuaWwEAAAAByRtYXRjaDAFAAAAAnB3AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAXIFAAAAByRtYXRjaDAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFGdldEJ1aWxkaW5nU3RhdHVzS2V5AAAAAwkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAB2NuZmdLZXkFAAAADEJ1aWxkU3RhcnRlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQZ2V0QXNzZXRPd25lcktleQAAAAIIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAB2NuZmdLZXkJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAaZ2V0QnVpbGRpbmdGaW5pc2hIZWlnaHRLZXkAAAADCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcggFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAAHY25mZ0tleQkAAGQAAAACBQAAAAZoZWlnaHQFAAAAEGRlbGF5Rm9yQnVpbGRpbmcJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAALYWRtaW5XYWxsZXQFAAAADVRvQWRtaW5XYWxsZXQFAAAACnNoaW55d2dnaWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAWZGFpbHlHYW1lUmV3YXJkc1dhbGxldAUAAAATVG9HYW1lUmV3YXJkc1dhbGxldAUAAAAKc2hpbnl3Z2dpZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABlkYWlseVN0YWtpbmdSZXdhcmRzV2FsbGV0BQAAABZUb1N0YWtpbmdSZXdhcmRzV2FsbGV0BQAAAApzaGlueXdnZ2lkBQAAAANuaWwJAAACAAAAAQIAAAAXSW5jb3JyZWN0IGludm9rZSByZXN1bHQAAAABaQEAAAALRmluaXNoQnVpbGQAAAAEAAAAB3R4SWRTdHIAAAAIYXNzZXRTdHIAAAAFTGV2ZWwAAAAJTmF0aW9uS2V5BAAAAAR0eElkCQACWQAAAAEFAAAAB3R4SWRTdHIEAAAABUFMS2V5CQEAAAAIZ2V0QUxLZXkAAAACBQAAAAhhc3NldFN0cgUAAAAFTGV2ZWwEAAAAEUJ1aWxkaW5nU3RhdHVzS2V5CQEAAAAUZ2V0QnVpbGRpbmdTdGF0dXNLZXkAAAADCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAUAAAAFQUxLZXkEAAAAD2ZpbmlzaEhlaWdodEtleQkBAAAAGmdldEJ1aWxkaW5nRmluaXNoSGVpZ2h0S2V5AAAAAwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAABHR4SWQFAAAABUFMS2V5BAAAAAhhc3NldEtleQkBAAAADWdldEFzc2V0SWRLZXkAAAACBQAAAAR0eElkBQAAAAVBTEtleQQAAAAKYXNzZXRPd25lcgkBAAAADHRyeUdldFN0cmluZwAAAAEJAQAAABBnZXRBc3NldE93bmVyS2V5AAAAAgUAAAAEdHhJZAUAAAAFQUxLZXkDCQEAAAAVaXNOYXRpb25SZXNlcnZlZEFzc2V0AAAAAgUAAAAIYXNzZXRTdHIFAAAABUxldmVsAwMJAQAAAAEhAAAAAQkBAAAAD2NoZWNrQXNzZXRPd25lcgAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAlOYXRpb25LZXkJAQAAAAEhAAAAAQkBAAAACmNoZWNrQWRtaW4AAAABCAUAAAABaQAAAAZjYWxsZXIHCQAAAgAAAAECAAAAMFlvdSBhcmUgbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbgkBAAAAE2ludGVybmFsRmluaXNoQnVpbGQAAAAGBQAAAAlOYXRpb25LZXkFAAAABUFMS2V5BQAAAAhhc3NldEtleQUAAAARQnVpbGRpbmdTdGF0dXNLZXkFAAAAD2ZpbmlzaEhlaWdodEtleQUAAAAEdHhJZAMJAQAAAAIhPQAAAAIFAAAACmFzc2V0T3duZXIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAAAgAAAAEJAAEsAAAAAgIAAAAhWW91IGNhbm5vdCBjbGFpbSBvdGhlcidzIHBsYXllcnMgBQAAAAhhc3NldFN0cgQAAAAQYnVpbGRpbmdUeFN0YXR1cwkBAAAADHRyeUdldFN0cmluZwAAAAEFAAAAEUJ1aWxkaW5nU3RhdHVzS2V5AwkAAAAAAAACBQAAABBidWlsZGluZ1R4U3RhdHVzAgAAAAAJAAACAAAAAQIAAAAkTm8gcGVuZGluZyBvcGVyYXRpb25zIGZvciB0aGlzIGFzc2V0CQEAAAATaW50ZXJuYWxGaW5pc2hCdWlsZAAAAAYJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAVBTEtleQUAAAAIYXNzZXRLZXkFAAAAEUJ1aWxkaW5nU3RhdHVzS2V5BQAAAA9maW5pc2hIZWlnaHRLZXkFAAAABHR4SWQAAAABaQEAAAARdHJhbnNmZXJPd25lcnNoaXAAAAACAAAAB2Fzc2V0SWQAAAAIbmV3T3duZXIDCQEAAAABIQAAAAEJAQAAAApjaGVja0FkbWluAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAAAgAAAAECAAAAKU9ubHkgdGhlIGFkbWluIGNhbiBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uCQAFFAAAAAIJAQAAABlpbnRlcm5hbFRyYXNuZmVyT3duZXJzaGlwAAAAAgUAAAAHYXNzZXRJZAUAAAAIbmV3T3duZXIFAAAACG5ld093bmVyAAAAAWkBAAAAF2Rlc3Ryb3lBc3NldEFuZFRyYW5zZmVyAAAAAgAAAAdhc3NldElkAAAACXRvQWRkcmVzcwQAAAAGY2h1bmtzCQEAAAARZ2V0QXNzZXRUeXBlTGV2ZWwAAAABBQAAAAdhc3NldElkBAAAAAxzdHJBc3NldFR5cGUIBQAAAAZjaHVua3MAAAACXzEEAAAABWxldmVsCAUAAAAGY2h1bmtzAAAAAl8yBAAAAAFrCQEAAAAIZ2V0QUxLZXkAAAACBQAAAAxzdHJBc3NldFR5cGUFAAAABWxldmVsAwkBAAAAASEAAAABCQEAAAAKY2hlY2tBZG1pbgAAAAEIBQAAAAFpAAAABmNhbGxlcgkAAAIAAAABAgAAAClPbmx5IHRoZSBhZG1pbiBjYW4gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbgQAAAAIb2xkT3duZXIJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAWZ2V0QXNzZXRPd25lcktleVN0cmluZwAAAAEFAAAAB2Fzc2V0SWQEAAAACmFzc2V0Q29pbnMJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAAHYXNzZXRJZAQAAAAHcmVmQ2FsbAkAA/wAAAAECQEAAAAHQWRkcmVzcwAAAAEFAAAAD3RyZWFzdXJ5QWRkcmVzcwIAAAANYWRtaW5UcmFuc2ZlcgkABEwAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAl0b0FkZHJlc3MJAARMAAAAAgUAAAAKYXNzZXRDb2lucwUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAB3JlZkNhbGwFAAAAB3JlZkNhbGwEAAAADGN1cnJlbnRQb3dlcgkBAAAAFG5hdGlvbnNUcnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACBQAAAAhvbGRPd25lcgIAAAAGX1Bvd2VyBAAAAAphc3NldFBvd2VyCQEAAAARY29uZlRyeUdldEludGVnZXIAAAABCQABLAAAAAIFAAAAAWsCAAAABl9Qb3dlcgQAAAACcHcJAAP8AAAABAkBAAAAB0FkZHJlc3MAAAABBQAAAA5uYXRpb25zQWRkcmVzcwIAAAAMc2V0VXNlclBvd2VyCQAETAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAETAAAAAIJAABlAAAAAgUAAAAMY3VycmVudFBvd2VyBQAAAAphc3NldFBvd2VyBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAACcHcFAAAAAnB3BAAAAAckbWF0Y2gwBQAAAAJwdwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFyBQAAAAckbWF0Y2gwCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAkAAAIAAAABAgAAABhFcnJvciBzZXR0aW5nIHVzZXIgcG93ZXIJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAABRkZXN0cm95QXNzZXRGcm9tVXNlcgAAAAIAAAAHYXNzZXRJZAAAAANxdHkEAAAABmNodW5rcwkBAAAAEWdldEFzc2V0VHlwZUxldmVsAAAAAQUAAAAHYXNzZXRJZAQAAAAMc3RyQXNzZXRUeXBlCAUAAAAGY2h1bmtzAAAAAl8xBAAAAAVsZXZlbAgFAAAABmNodW5rcwAAAAJfMgQAAAABawkBAAAACGdldEFMS2V5AAAAAgUAAAAMc3RyQXNzZXRUeXBlBQAAAAVsZXZlbAMJAQAAAAEhAAAAAQkBAAAAD2NoZWNrQXNzZXRPd25lcgAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAdhc3NldElkCQAAAgAAAAECAAAAGFlvdSBkb24ndCBvd24gdGhpcyBhc3NldAQAAAAKYXNzZXRDb2lucwkBAAAADXRyeUdldEludGVnZXIAAAABBQAAAAdhc3NldElkBAAAAAxjdXJyZW50UG93ZXIJAQAAABRuYXRpb25zVHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXICAAAABl9Qb3dlcgQAAAAKYXNzZXRQb3dlcgkBAAAAEWNvbmZUcnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACBQAAAAFrAgAAAAZfUG93ZXIDCQEAAAARY29uZlRyeUdldEJvb2xlYW4AAAABCQABLAAAAAIFAAAAAWsCAAAAC19BZ2dyZWdhdGVkBAAAAA51bml0QXNzZXRDb2lucwkAAGkAAAACCQAAaAAAAAIJAQAAABFjb25mVHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgUAAAABawIAAAAFX0Nvc3QAAAAAAAAAABQAAAAAAAAAAGQEAAAACHF0eUFzc2V0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgUAAAABawIAAAAEX1F0eQMJAABmAAAAAgAAAAAAAAAAAAkAAGUAAAACBQAAAAhxdHlBc3NldAUAAAADcXR5CQAAAgAAAAEJAAEsAAAAAgIAAAAWeW91IGRvbid0IGhhdmUgZW5vdWdoIAUAAAAMc3RyQXNzZXRUeXBlBAAAAAJwdwkAA/wAAAAECQEAAAAHQWRkcmVzcwAAAAEFAAAADm5hdGlvbnNBZGRyZXNzAgAAAAxzZXRVc2VyUG93ZXIJAARMAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAARMAAAAAgkAAGUAAAACBQAAAAxjdXJyZW50UG93ZXIJAABoAAAAAgUAAAAKYXNzZXRQb3dlcgUAAAADcXR5BQAAAANuaWwFAAAAA25pbAQAAAAHJG1hdGNoMAUAAAACcHcDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABcgUAAAAHJG1hdGNoMAQAAAACdHIJAAP8AAAABAkBAAAAB0FkZHJlc3MAAAABBQAAAA90cmVhc3VyeUFkZHJlc3MCAAAADWFkbWluVHJhbnNmZXIJAARMAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAARMAAAAAgkAAGgAAAACBQAAAA51bml0QXNzZXRDb2lucwUAAAADcXR5BQAAAANuaWwFAAAAA25pbAQAAAAHJG1hdGNoMQUAAAACdHIDCQAAAQAAAAIFAAAAByRtYXRjaDECAAAAA0ludAQAAAABdAUAAAAHJG1hdGNoMQMJAABmAAAAAgkAAGUAAAACBQAAAAhxdHlBc3NldAUAAAADcXR5AAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAAAWsCAAAABF9RdHkJAABlAAAAAgUAAAAIcXR5QXNzZXQFAAAAA3F0eQUAAAADbmlsCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAkAAAIAAAABAgAAABhFcnJvciB0cmFuc2ZlcnJpbmcgY29pbnMJAAACAAAAAQIAAAAYRXJyb3Igc2V0dGluZyB1c2VyIHBvd2VyBAAAAAJwdwkAA/wAAAAECQEAAAAHQWRkcmVzcwAAAAEFAAAADm5hdGlvbnNBZGRyZXNzAgAAAAxzZXRVc2VyUG93ZXIJAARMAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAARMAAAAAgkAAGUAAAACBQAAAAxjdXJyZW50UG93ZXIFAAAACmFzc2V0UG93ZXIFAAAAA25pbAUAAAADbmlsBAAAAAckbWF0Y2gwBQAAAAJwdwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFyBQAAAAckbWF0Y2gwBAAAAAJ0cgkAA/wAAAAECQEAAAAHQWRkcmVzcwAAAAEFAAAAD3RyZWFzdXJ5QWRkcmVzcwIAAAANYWRtaW5UcmFuc2ZlcgkABEwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkABEwAAAACBQAAAAphc3NldENvaW5zBQAAAANuaWwFAAAAA25pbAQAAAAHJG1hdGNoMQUAAAACdHIDCQAAAQAAAAIFAAAAByRtYXRjaDECAAAAA0ludAQAAAABdAUAAAAHJG1hdGNoMQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAAdhc3NldElkBQAAAANuaWwJAAACAAAAAQIAAAAYRXJyb3IgdHJhbnNmZXJyaW5nIGNvaW5zCQAAAgAAAAECAAAAGEVycm9yIHNldHRpbmcgdXNlciBwb3dlcgAAAAFpAQAAAA5zZXROYXRpb25Pd25lcgAAAAIAAAAJbmF0aW9uS2V5AAAACG5ld093bmVyAwkBAAAACmNoZWNrQWRtaW4AAAABCAUAAAABaQAAAAZjYWxsZXIJAAUUAAAAAgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAACW5hdGlvbktleQIAAAAGX093bmVyBQAAAAhuZXdPd25lcgUAAAADbmlsBgQAAAAMY3VycmVudE93bmVyCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACBQAAAAluYXRpb25LZXkCAAAABl9Pd25lcgMJAQAAAAIhPQAAAAIFAAAADGN1cnJlbnRPd25lcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAACAAAAAQIAAAAcWW91IGFyZSBub3QgdGhlIG5hdGlvbiBvd25lcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAACW5hdGlvbktleQIAAAAGX093bmVyBQAAAAhuZXdPd25lcgUAAAADbmlsAAAAAWkBAAAADWJ1eU5hdGlvbkl0ZW0AAAACAAAAB2Fzc2V0SWQAAAAJTmF0aW9uS2V5BAAAAAZjaHVua3MJAQAAABFnZXRBc3NldFR5cGVMZXZlbAAAAAEFAAAAB2Fzc2V0SWQEAAAADHN0ckFzc2V0VHlwZQgFAAAABmNodW5rcwAAAAJfMQQAAAAFbGV2ZWwIBQAAAAZjaHVua3MAAAACXzIEAAAAAWsJAQAAAAhnZXRBTEtleQAAAAIFAAAADHN0ckFzc2V0VHlwZQUAAAAFbGV2ZWwEAAAAAW4JAQAAABRuYXRpb25zVHJ5R2V0SW50ZWdlcgAAAAEJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAANuaWQJAQAAABRuYXRpb25zVHJ5R2V0SW50ZWdlcgAAAAEFAAAACU5hdGlvbktleQMJAQAAAAIhPQAAAAIFAAAAAW4FAAAAA25pZAkAAAIAAAABAgAAACh5b3UgY2FuIGJ1eSBhc3NldHMgb25seSBmcm9tIHlvdXIgbmF0aW9uAwkBAAAAASEAAAABCQEAAAAPY2hlY2tBc3NldE93bmVyAAAAAgUAAAAJTmF0aW9uS2V5BQAAAAdhc3NldElkCQAAAgAAAAECAAAAJ1RoZSBhc3NldCBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIG5hdGlvbgMJAQAAAAEhAAAAAQkBAAAAFWlzTmF0aW9uUmVzZXJ2ZWRBc3NldAAAAAIFAAAADHN0ckFzc2V0VHlwZQUAAAAFbGV2ZWwJAAACAAAAAQIAAAAndGhpcyBhc3NldCBjYW5ub3QgYmUgc29sZCBieSB0aGUgbmF0aW9uBAAAAAphc3NldFByaWNlCQEAAAARY29uZlRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAQAAAAhnZXRBTEtleQAAAAIFAAAADHN0ckFzc2V0VHlwZQUAAAAFbGV2ZWwCAAAACl9TZWxsUHJpY2UEAAAACGFtb3VudEluCQEAAAAFdmFsdWUAAAABCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQDCQAAZgAAAAIFAAAACmFzc2V0UHJpY2UFAAAACGFtb3VudEluCQAAAgAAAAEJAAEsAAAAAgIAAAA8WW91IHByb3ZpZGVkIGxlc3MgJGhlZyB0aGFuIHRoZSBuZWVkZWQgY29zdCBmb3IgYnV5aW5nIHRoaXMgBQAAAAxzdHJBc3NldFR5cGUDCQEAAAACIT0AAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBQAAAApzaGlueXdnZ2lkCQAAAgAAAAECAAAAGk9ubHkgJEhFRyBwYXltZW50cyBhbGxvd2VkBAAAAAFhCQAD/AAAAAQJAQAAAAdBZGRyZXNzAAAAAQUAAAAPdHJlYXN1cnlBZGRyZXNzAgAAABRpbmNyZWFzZU5hdGlvbldhbGxldAkABEwAAAACBQAAAAlOYXRpb25LZXkJAARMAAAAAgUAAAAIYW1vdW50SW4FAAAAA25pbAUAAAADbmlsBAAAAAckbWF0Y2gwBQAAAAFhAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWIFAAAAByRtYXRjaDAJAARNAAAAAgkBAAAAGWludGVybmFsVHJhc25mZXJPd25lcnNoaXAAAAACBQAAAAdhc3NldElkCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABBQAAAA90cmVhc3VyeUFkZHJlc3MFAAAACGFtb3VudEluBQAAAApzaGlueXdnZ2lkCQAAAgAAAAECAAAAKUVycm9yIHRyYW5zZmVycmluZyBTSEVHIHRvIG5hdGlvbnMgd2FsbGV0AAAAAWkBAAAAFkFkZEFzc2V0RnJvbU1hcmtlcGxhY2UAAAADAAAAB2Fzc2V0SWQAAAAIb2xkT3duZXIAAAAJYXNzZXRTaGVnAwkBAAAAASEAAAABCQEAAAAKY2hlY2tBZG1pbgAAAAEIBQAAAAFpAAAABmNhbGxlcgkAAAIAAAABAgAAAC1Zb3UgYXJlIG5vdCBhbGxvd2VkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24JAAUUAAAAAgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAWZ2V0QXNzZXRPd25lcktleVN0cmluZwAAAAEFAAAAB2Fzc2V0SWQFAAAACG9sZE93bmVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAdhc3NldElkBQAAAAlhc3NldFNoZWcFAAAAA25pbAUAAAAIb2xkT3duZXIAAAABaQEAAAAaVHJhbnNmZXJBc3NldFRvTWFya2V0cGxhY2UAAAACAAAAB2Fzc2V0SWQAAAAJc2VsbHByaWNlAwkBAAAAASEAAAABCQEAAAAPY2hlY2tBc3NldE93bmVyAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAjWW91IGFyZSBub3QgdGhlIG93bmVyIG9mIHRoaXMgYXNzZXQEAAAACWFzc2V0U2hlZwkBAAAADXRyeUdldEludGVnZXIAAAABBQAAAAdhc3NldElkBAAAAAJ0cgkAA/wAAAAECQEAAAAHQWRkcmVzcwAAAAEFAAAAEm1hcmtldHBsYWNlQWRkcmVzcwIAAAAJcHV0T25TYWxlCQAETAAAAAIFAAAAB2Fzc2V0SWQJAARMAAAAAgUAAAAJYXNzZXRTaGVnCQAETAAAAAIFAAAACXNlbGxwcmljZQUAAAADbmlsBQAAAANuaWwEAAAAByRtYXRjaDAFAAAAAnRyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAXQFAAAAByRtYXRjaDAJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAFmdldEFzc2V0T3duZXJLZXlTdHJpbmcAAAABBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAkAAAIAAAABAgAAAClFcnJvciBwdXR0aW5nIHRoZSBpdGVtIG9uIHRoZSBtYXJrZXRwbGFjZQAAAABYXPeZ", "height": 2110677, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A6k1ebbNzaMxRJt1oUp1pt2rAc6WeJDxy9uHLensCESy Next: 9V4rRnjSVvsvhfkaGBXNkPC2KJZKuPCXuGHtTobFXRsN Diff:
OldNewDifferences
284284 }
285285
286286
287-func CheckAssetBuildable (Name,Level,Caller,NationKey,SacrificeKey) = if ((NationKey == ""))
287+func CheckAssetBuildable (Name,Level,Caller,NationKey,SacrificeKey) = if ((NationKey != ""))
288288 then CheckAssetBuildableNation(Name, Level, NationKey, SacrificeKey)
289289 else CheckAssetBuildableUser(Name, Level, Caller, SacrificeKey)
290290
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let shinywggid = base58'AFQS5E4ELtxex3iANtWtUU2V2oWJZSo8VVnK8z3VFmqf'
55
66 let treasuryAddress = base58'3MyDGEoKp1gF4LSRknk9vSuDEyrwuYXcQEQ'
77
88 let assetsAddress = base58'3N8WDKbqGox5Eky326PHHT7rUyrby5MXdmb'
99
1010 let marketplaceAddress = base58'3Mra7mjPipcQd5sJaRmXK8xgS4scb8gPF4A'
1111
1212 let configurationAddress = base58'3N9tj3b2djcaZozn97VkYchL9S1i6cdEbC1'
1313
1414 let nationsAddress = base58'3MvyzDtzWWV5MZ1GP8JfQhhQqiGU4Nbifdy'
1515
1616 let adminWallet = addressFromStringValue("3MpNtiPSRSq6NnaQYk38BfWSzZcgAYTyrQ9")
1717
1818 let dailyGameRewardsWallet = addressFromStringValue("3MuSrXTTiwo9bdoD6FeaBpMUYMiU5saDv2U")
1919
2020 let dailyStakingRewardsWallet = addressFromStringValue("3Mv3mr3uNXdpgkVPApbGEJjMQXqau37DY5i")
2121
2222 func checkAdmin (caller) = if (if (if (if (if ((caller == adminWallet))
2323 then true
2424 else (caller == this))
2525 then true
2626 else (caller.bytes == assetsAddress))
2727 then true
2828 else (caller.bytes == treasuryAddress))
2929 then true
3030 else (caller.bytes == marketplaceAddress))
3131 then true
3232 else (caller.bytes == nationsAddress)
3333
3434
3535 func tryGetInteger (key) = match getInteger(this, key) {
3636 case b: Int =>
3737 b
3838 case _ =>
3939 0
4040 }
4141
4242
4343 func tryGetBoolean (key) = match getBoolean(this, key) {
4444 case b: Boolean =>
4545 b
4646 case _ =>
4747 false
4848 }
4949
5050
5151 func tryGetString (key) = match getString(this, key) {
5252 case b: String =>
5353 b
5454 case _ =>
5555 ""
5656 }
5757
5858
5959 func getALKey (Name,Level) = ((Name + "_lvl") + toString(Level))
6060
6161
6262 func confTryGetInteger (key) = match getInteger(Address(configurationAddress), key) {
6363 case b: Int =>
6464 b
6565 case _ =>
6666 0
6767 }
6868
6969
7070 func confTryGetString (key) = match getString(Address(configurationAddress), key) {
7171 case b: String =>
7272 b
7373 case _ =>
7474 ""
7575 }
7676
7777
7878 func confTryGetBoolean (key) = match getBoolean(Address(configurationAddress), key) {
7979 case b: Boolean =>
8080 b
8181 case _ =>
8282 false
8383 }
8484
8585
8686 func getTreasuryKey (nationid) = (nationid + "_Treasury")
8787
8888
8989 func treasuryTryGetInteger (key) = match getInteger(Address(treasuryAddress), key) {
9090 case b: Int =>
9191 b
9292 case _ =>
9393 0
9494 }
9595
9696
9797 func nationsTryGetInteger (key) = match getInteger(Address(nationsAddress), key) {
9898 case b: Int =>
9999 b
100100 case _ =>
101101 0
102102 }
103103
104104
105105 func nationsTryGetBoolean (key) = match getBoolean(Address(nationsAddress), key) {
106106 case b: Boolean =>
107107 b
108108 case _ =>
109109 false
110110 }
111111
112112
113113 func nationsTryGetString (key) = match getString(Address(nationsAddress), key) {
114114 case b: String =>
115115 b
116116 case _ =>
117117 ""
118118 }
119119
120120
121121 func getAssetOwnerKeyString (assetId) = (assetId + "_Owner")
122122
123123
124124 let BuildStarted = "BUILD_STARTED"
125125
126126 let BuildFinished = "BUILD_FINISHED"
127127
128128 func getAssetIdKey (txId,assetType) = ((assetType + "_") + toBase58String(txId))
129129
130130
131131 func getAssetOwnerKey (txId,assetType) = (getAssetIdKey(txId, assetType) + "_Owner")
132132
133133
134134 func getBuildingFinishHeightKey (address,txId,assetType) = (((address + "_") + getAssetIdKey(txId, assetType)) + "_fh")
135135
136136
137137 func getBuildingStatusKey (address,txId,assetType) = (((address + "_") + getAssetIdKey(txId, assetType)) + "_status")
138138
139139
140140 func getAssetTypeLevel (assetStr) = {
141141 let chunks = split(assetStr, "_")
142142 let strAssetType = chunks[0]
143143 let level = parseIntValue(drop(chunks[1], 3))
144144 $Tuple2(strAssetType, level)
145145 }
146146
147147
148148 func internalFinishBuild (caller,assetStr,assetKey,BuildingStatusKey,finishHeightKey,transactionId) = {
149149 let chunks = getAssetTypeLevel(assetStr)
150150 let strAssetType = chunks._1
151151 let level = chunks._2
152152 let buildingFinishHeight = getIntegerValue(this, finishHeightKey)
153153 if ((buildingFinishHeight > height))
154154 then throw((((("Building is not finished yet " + toString((buildingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((buildingFinishHeight - height))) + " minutes"))
155155 else if ((take(strAssetType, 4) == "TECH"))
156156 then {
157157 let discovered = invoke(Address(nationsAddress), "setTecnhnologyDiscovered", [caller, assetStr], nil)
158158 if ((discovered == true))
159159 then [DeleteEntry(BuildingStatusKey), DeleteEntry(finishHeightKey)]
160160 else throw("error discovering technology")
161161 }
162162 else {
163163 let assetPower = confTryGetInteger((assetStr + "_Power"))
164164 let assetCoins = ((confTryGetInteger((assetStr + "_Cost")) * 20) / 100)
165165 let refCall = invoke(Address(treasuryAddress), "Pay", [caller, assetCoins], nil)
166166 if ((refCall == refCall))
167167 then if ((assetPower > 0))
168168 then {
169169 let currentPower = nationsTryGetInteger((caller + "_Power"))
170170 let pw = invoke(Address(nationsAddress), "setUserPower", [caller, (currentPower + assetPower)], nil)
171171 if ((pw == pw))
172172 then if (confTryGetBoolean((assetStr + "_Aggregated")))
173173 then {
174174 let aggrAssetkey = ((assetStr + "_") + caller)
175175 let coins = tryGetInteger(aggrAssetkey)
176176 let qty = tryGetInteger((aggrAssetkey + "_Qty"))
177177 [DeleteEntry(getAssetOwnerKey(transactionId, assetStr)), StringEntry((aggrAssetkey + "_Owner"), caller), IntegerEntry(aggrAssetkey, (coins + assetCoins)), IntegerEntry((aggrAssetkey + "_Qty"), (qty + 1)), DeleteEntry(BuildingStatusKey), DeleteEntry(finishHeightKey)]
178178 }
179179 else [IntegerEntry(assetKey, assetCoins), DeleteEntry(BuildingStatusKey), DeleteEntry(finishHeightKey)]
180180 else throw("Strict value is not equal to itself.")
181181 }
182182 else if (confTryGetBoolean((assetStr + "_Aggregated")))
183183 then {
184184 let aggrAssetkey = ((assetStr + "_") + caller)
185185 let coins = tryGetInteger(aggrAssetkey)
186186 let qty = tryGetInteger((aggrAssetkey + "_Qty"))
187187 [DeleteEntry(getAssetOwnerKey(transactionId, assetStr)), StringEntry((aggrAssetkey + "_Owner"), caller), IntegerEntry(aggrAssetkey, (coins + assetCoins)), IntegerEntry((aggrAssetkey + "_Qty"), (qty + 1)), DeleteEntry(BuildingStatusKey), DeleteEntry(finishHeightKey)]
188188 }
189189 else [IntegerEntry(assetKey, assetCoins), DeleteEntry(BuildingStatusKey), DeleteEntry(finishHeightKey)]
190190 else throw("Strict value is not equal to itself.")
191191 }
192192 }
193193
194194
195195 func checkAssetOwner (caller,assetKey) = {
196196 let assetOwner = tryGetString(getAssetOwnerKeyString(assetKey))
197197 (assetOwner == caller)
198198 }
199199
200200
201201 func isNationReservedAsset (Name,Level) = {
202202 let k = getALKey(Name, Level)
203203 confTryGetBoolean((k + "_NationReserved"))
204204 }
205205
206206
207207 func internalTrasnferOwnership (assetId,newOwner) = {
208208 let chunks = getAssetTypeLevel(assetId)
209209 let strAssetType = chunks._1
210210 let level = chunks._2
211211 let k = getALKey(strAssetType, level)
212212 let oldOwner = tryGetString(getAssetOwnerKeyString(assetId))
213213 let assetPower = confTryGetInteger((k + "_Power"))
214214 if ((assetPower > 0))
215215 then {
216216 let currentPower = nationsTryGetInteger((oldOwner + "_Power"))
217217 let pw = invoke(Address(nationsAddress), "setUserPower", [oldOwner, (currentPower - assetPower)], nil)
218218 if ((pw == pw))
219219 then if ((pw != (currentPower - assetPower)))
220220 then throw("Incorrect invoke result")
221221 else {
222222 let newcurrentPower = nationsTryGetInteger((newOwner + "_Power"))
223223 let pw2 = invoke(Address(nationsAddress), "setUserPower", [newOwner, (newcurrentPower + assetPower)], nil)
224224 if ((pw2 == pw2))
225225 then match pw2 {
226226 case r: Int =>
227227 [StringEntry(getAssetOwnerKeyString(assetId), newOwner)]
228228 case _ =>
229229 throw("Incorrect invoke result")
230230 }
231231 else throw("Strict value is not equal to itself.")
232232 }
233233 else throw("Strict value is not equal to itself.")
234234 }
235235 else [StringEntry(getAssetOwnerKeyString(assetId), newOwner)]
236236 }
237237
238238
239239 func CheckAssetBuildableSacrifice (ALKey,caller,SacrificeKey) = {
240240 let assetSac = confTryGetString((ALKey + "_SacrificeAsset"))
241241 let assetSaclvl = confTryGetInteger((ALKey + "_SacrificeAssetLevel"))
242242 if ((assetSac == ""))
243243 then true
244244 else if (!(checkAssetOwner(caller, SacrificeKey)))
245245 then throw("you are not the owner of the asset")
246246 else {
247247 let chunks = getAssetTypeLevel(SacrificeKey)
248248 if (if ((assetSac != chunks._1))
249249 then true
250250 else (assetSaclvl != chunks._2))
251251 then throw("the sacrificeAsset has the wrong type or level")
252252 else true
253253 }
254254 }
255255
256256
257257 func CheckAssetBuildableNation (Name,Level,NationKey,SacrificeKey) = {
258258 let cnfgKey = getALKey(Name, Level)
259259 let tec = confTryGetString((cnfgKey + "_Tecnhology_discovered"))
260260 if ((tec != ""))
261261 then if (nationsTryGetBoolean(((NationKey + "_") + tec)))
262262 then CheckAssetBuildableSacrifice(cnfgKey, NationKey, SacrificeKey)
263263 else false
264264 else CheckAssetBuildableSacrifice(cnfgKey, NationKey, SacrificeKey)
265265 }
266266
267267
268268 func CheckAssetBuildableUser (Name,Level,caller,SacrificeKey) = {
269269 let cnfKey = getALKey(Name, Level)
270270 let nationId = nationsTryGetInteger(caller)
271271 if ((nationId == 0))
272272 then false
273273 else {
274274 let tec = confTryGetString((cnfKey + "_Tecnhology_discovered"))
275275 if ((tec != ""))
276276 then {
277277 let NationKey = nationsTryGetString(toString(nationId))
278278 if (nationsTryGetBoolean(((NationKey + "_") + tec)))
279279 then CheckAssetBuildableSacrifice(cnfKey, caller, SacrificeKey)
280280 else false
281281 }
282282 else CheckAssetBuildableSacrifice(cnfKey, caller, SacrificeKey)
283283 }
284284 }
285285
286286
287-func CheckAssetBuildable (Name,Level,Caller,NationKey,SacrificeKey) = if ((NationKey == ""))
287+func CheckAssetBuildable (Name,Level,Caller,NationKey,SacrificeKey) = if ((NationKey != ""))
288288 then CheckAssetBuildableNation(Name, Level, NationKey, SacrificeKey)
289289 else CheckAssetBuildableUser(Name, Level, Caller, SacrificeKey)
290290
291291
292292 @Callable(i)
293293 func StartBuild (strAssetType,Level,NationKey,SacrificeKey) = if (!(CheckAssetBuildable(strAssetType, Level, toString(i.caller), NationKey, SacrificeKey)))
294294 then throw("You cannot build this Item")
295295 else {
296296 let cnfgKey = getALKey(strAssetType, Level)
297297 let delayForBuilding = confTryGetInteger((cnfgKey + "_BuildTime"))
298298 let assetBuildCost = confTryGetInteger((cnfgKey + "_Cost"))
299299 let ToAdminWallet = ((assetBuildCost * 5) / 100)
300300 let ToGameRewardsWallet = ((assetBuildCost * 10) / 100)
301301 let ToStakingRewardsWallet = ((assetBuildCost * 65) / 100)
302302 let UnitStakeSheg = (((assetBuildCost - ToAdminWallet) - ToGameRewardsWallet) - ToStakingRewardsWallet)
303303 if (isNationReservedAsset(strAssetType, Level))
304304 then if (if (!(checkAssetOwner(toString(i.caller), NationKey)))
305305 then !(checkAdmin(i.caller))
306306 else false)
307307 then throw("You are not the owner of the nation")
308308 else {
309309 let nationsheg = treasuryTryGetInteger(getTreasuryKey(NationKey))
310310 if ((assetBuildCost > nationsheg))
311311 then throw("The nation hasn't enough funds")
312312 else {
313313 let d = invoke(Address(treasuryAddress), "decreaseNationWallet", [NationKey, assetBuildCost], nil)
314314 match d {
315315 case r: Int =>
316316 let pw = invoke(Address(treasuryAddress), "arbitraryAddCoins", [NationKey, UnitStakeSheg], nil)
317317 match pw {
318318 case b: Int =>
319319 let transfer = invoke(Address(treasuryAddress), "distributeNationPayRewards", [assetBuildCost], nil)
320320 match transfer {
321321 case t: Int =>
322322 [StringEntry(getBuildingStatusKey(toString(i.originCaller), i.transactionId, cnfgKey), BuildStarted), StringEntry(getAssetOwnerKey(i.transactionId, cnfgKey), NationKey), IntegerEntry(getBuildingFinishHeightKey(toString(i.originCaller), i.transactionId, cnfgKey), (height + delayForBuilding))]
323323 case _ =>
324324 throw("Error Distributing asset rewards")
325325 }
326326 case _ =>
327327 throw("Error Depositing nation funds")
328328 }
329329 case _ =>
330330 throw("Error Depositing nation funds")
331331 }
332332 }
333333 }
334334 else {
335335 let assetSac = confTryGetString((cnfgKey + "_SacrificeAsset"))
336336 if ((assetSac != ""))
337337 then {
338338 let pw = invoke(Address(treasuryAddress), "NoPaymentDeposit", [toString(i.caller), UnitStakeSheg], nil)
339339 match pw {
340340 case r: Int =>
341341 let transfer = invoke(Address(treasuryAddress), "distributeNationPayRewards", [assetBuildCost], nil)
342342 match transfer {
343343 case t: Int =>
344344 [DeleteEntry(SacrificeKey), StringEntry(getBuildingStatusKey(toString(i.originCaller), i.transactionId, cnfgKey), BuildStarted), StringEntry(getAssetOwnerKey(i.transactionId, cnfgKey), NationKey), IntegerEntry(getBuildingFinishHeightKey(toString(i.originCaller), i.transactionId, cnfgKey), (height + delayForBuilding))]
345345 case _ =>
346346 throw("Error Distributing asset rewards")
347347 }
348348 case _ =>
349349 throw("Error adding deposit")
350350 }
351351 }
352352 else {
353353 let amountIn = value(i.payments[0].amount)
354354 if ((assetBuildCost > amountIn))
355355 then throw(("You provided less $heg than the needed cost for building this " + strAssetType))
356356 else if ((i.payments[0].assetId != shinywggid))
357357 then throw("Only $HEG payments allowed")
358358 else {
359359 let pw = invoke(Address(treasuryAddress), "Deposit", nil, [AttachedPayment(shinywggid, UnitStakeSheg)])
360360 match pw {
361361 case r: Int =>
362362 [StringEntry(getBuildingStatusKey(toString(i.originCaller), i.transactionId, cnfgKey), BuildStarted), StringEntry(getAssetOwnerKey(i.transactionId, cnfgKey), toString(i.originCaller)), IntegerEntry(getBuildingFinishHeightKey(toString(i.originCaller), i.transactionId, cnfgKey), (height + delayForBuilding)), ScriptTransfer(adminWallet, ToAdminWallet, shinywggid), ScriptTransfer(dailyGameRewardsWallet, ToGameRewardsWallet, shinywggid), ScriptTransfer(dailyStakingRewardsWallet, ToStakingRewardsWallet, shinywggid)]
363363 case _ =>
364364 throw("Incorrect invoke result")
365365 }
366366 }
367367 }
368368 }
369369 }
370370
371371
372372
373373 @Callable(i)
374374 func FinishBuild (txIdStr,assetStr,Level,NationKey) = {
375375 let txId = fromBase58String(txIdStr)
376376 let ALKey = getALKey(assetStr, Level)
377377 let BuildingStatusKey = getBuildingStatusKey(toString(i.caller), txId, ALKey)
378378 let finishHeightKey = getBuildingFinishHeightKey(toString(i.caller), txId, ALKey)
379379 let assetKey = getAssetIdKey(txId, ALKey)
380380 let assetOwner = tryGetString(getAssetOwnerKey(txId, ALKey))
381381 if (isNationReservedAsset(assetStr, Level))
382382 then if (if (!(checkAssetOwner(toString(i.caller), NationKey)))
383383 then !(checkAdmin(i.caller))
384384 else false)
385385 then throw("You are not authorized to perform this operation")
386386 else internalFinishBuild(NationKey, ALKey, assetKey, BuildingStatusKey, finishHeightKey, txId)
387387 else if ((assetOwner != toString(i.caller)))
388388 then throw(("You cannot claim other's players " + assetStr))
389389 else {
390390 let buildingTxStatus = tryGetString(BuildingStatusKey)
391391 if ((buildingTxStatus == ""))
392392 then throw("No pending operations for this asset")
393393 else internalFinishBuild(toString(i.caller), ALKey, assetKey, BuildingStatusKey, finishHeightKey, txId)
394394 }
395395 }
396396
397397
398398
399399 @Callable(i)
400400 func transferOwnership (assetId,newOwner) = if (!(checkAdmin(i.caller)))
401401 then throw("Only the admin can perform this operation")
402402 else $Tuple2(internalTrasnferOwnership(assetId, newOwner), newOwner)
403403
404404
405405
406406 @Callable(i)
407407 func destroyAssetAndTransfer (assetId,toAddress) = {
408408 let chunks = getAssetTypeLevel(assetId)
409409 let strAssetType = chunks._1
410410 let level = chunks._2
411411 let k = getALKey(strAssetType, level)
412412 if (!(checkAdmin(i.caller)))
413413 then throw("Only the admin can perform this operation")
414414 else {
415415 let oldOwner = tryGetString(getAssetOwnerKeyString(assetId))
416416 let assetCoins = tryGetInteger(assetId)
417417 let refCall = invoke(Address(treasuryAddress), "adminTransfer", [addressFromStringValue(toAddress), assetCoins], nil)
418418 if ((refCall == refCall))
419419 then {
420420 let currentPower = nationsTryGetInteger((oldOwner + "_Power"))
421421 let assetPower = confTryGetInteger((k + "_Power"))
422422 let pw = invoke(Address(nationsAddress), "setUserPower", [toString(i.caller), (currentPower - assetPower)], nil)
423423 if ((pw == pw))
424424 then match pw {
425425 case r: Int =>
426426 [DeleteEntry(assetId)]
427427 case _ =>
428428 throw("Error setting user power")
429429 }
430430 else throw("Strict value is not equal to itself.")
431431 }
432432 else throw("Strict value is not equal to itself.")
433433 }
434434 }
435435
436436
437437
438438 @Callable(i)
439439 func destroyAssetFromUser (assetId,qty) = {
440440 let chunks = getAssetTypeLevel(assetId)
441441 let strAssetType = chunks._1
442442 let level = chunks._2
443443 let k = getALKey(strAssetType, level)
444444 if (!(checkAssetOwner(toString(i.caller), assetId)))
445445 then throw("You don't own this asset")
446446 else {
447447 let assetCoins = tryGetInteger(assetId)
448448 let currentPower = nationsTryGetInteger((toString(i.caller) + "_Power"))
449449 let assetPower = confTryGetInteger((k + "_Power"))
450450 if (confTryGetBoolean((k + "_Aggregated")))
451451 then {
452452 let unitAssetCoins = ((confTryGetInteger((k + "_Cost")) * 20) / 100)
453453 let qtyAsset = tryGetInteger((k + "_Qty"))
454454 if ((0 > (qtyAsset - qty)))
455455 then throw(("you don't have enough " + strAssetType))
456456 else {
457457 let pw = invoke(Address(nationsAddress), "setUserPower", [toString(i.caller), (currentPower - (assetPower * qty))], nil)
458458 match pw {
459459 case r: Int =>
460460 let tr = invoke(Address(treasuryAddress), "adminTransfer", [toString(i.caller), (unitAssetCoins * qty)], nil)
461461 match tr {
462462 case t: Int =>
463463 if (((qtyAsset - qty) > 0))
464464 then [IntegerEntry((k + "_Qty"), (qtyAsset - qty))]
465465 else [DeleteEntry(assetId)]
466466 case _ =>
467467 throw("Error transferring coins")
468468 }
469469 case _ =>
470470 throw("Error setting user power")
471471 }
472472 }
473473 }
474474 else {
475475 let pw = invoke(Address(nationsAddress), "setUserPower", [toString(i.caller), (currentPower - assetPower)], nil)
476476 match pw {
477477 case r: Int =>
478478 let tr = invoke(Address(treasuryAddress), "adminTransfer", [toString(i.caller), assetCoins], nil)
479479 match tr {
480480 case t: Int =>
481481 [DeleteEntry(assetId)]
482482 case _ =>
483483 throw("Error transferring coins")
484484 }
485485 case _ =>
486486 throw("Error setting user power")
487487 }
488488 }
489489 }
490490 }
491491
492492
493493
494494 @Callable(i)
495495 func setNationOwner (nationKey,newOwner) = if (checkAdmin(i.caller))
496496 then $Tuple2([StringEntry((nationKey + "_Owner"), newOwner)], true)
497497 else {
498498 let currentOwner = tryGetString((nationKey + "_Owner"))
499499 if ((currentOwner != toString(i.caller)))
500500 then throw("You are not the nation owner")
501501 else [StringEntry((nationKey + "_Owner"), newOwner)]
502502 }
503503
504504
505505
506506 @Callable(i)
507507 func buyNationItem (assetId,NationKey) = {
508508 let chunks = getAssetTypeLevel(assetId)
509509 let strAssetType = chunks._1
510510 let level = chunks._2
511511 let k = getALKey(strAssetType, level)
512512 let n = nationsTryGetInteger(toString(i.caller))
513513 let nid = nationsTryGetInteger(NationKey)
514514 if ((n != nid))
515515 then throw("you can buy assets only from your nation")
516516 else if (!(checkAssetOwner(NationKey, assetId)))
517517 then throw("The asset does not belong to the nation")
518518 else if (!(isNationReservedAsset(strAssetType, level)))
519519 then throw("this asset cannot be sold by the nation")
520520 else {
521521 let assetPrice = confTryGetInteger((getALKey(strAssetType, level) + "_SellPrice"))
522522 let amountIn = value(i.payments[0].amount)
523523 if ((assetPrice > amountIn))
524524 then throw(("You provided less $heg than the needed cost for buying this " + strAssetType))
525525 else if ((i.payments[0].assetId != shinywggid))
526526 then throw("Only $HEG payments allowed")
527527 else {
528528 let a = invoke(Address(treasuryAddress), "increaseNationWallet", [NationKey, amountIn], nil)
529529 match a {
530530 case b: Int =>
531531 (internalTrasnferOwnership(assetId, toString(i.caller)) :+ ScriptTransfer(Address(treasuryAddress), amountIn, shinywggid))
532532 case _ =>
533533 throw("Error transferring SHEG to nations wallet")
534534 }
535535 }
536536 }
537537 }
538538
539539
540540
541541 @Callable(i)
542542 func AddAssetFromMarkeplace (assetId,oldOwner,assetSheg) = if (!(checkAdmin(i.caller)))
543543 then throw("You are not allowed to perform this operation")
544544 else $Tuple2([StringEntry(getAssetOwnerKeyString(assetId), oldOwner), IntegerEntry(assetId, assetSheg)], oldOwner)
545545
546546
547547
548548 @Callable(i)
549549 func TransferAssetToMarketplace (assetId,sellprice) = if (!(checkAssetOwner(toString(i.caller), assetId)))
550550 then throw("You are not the owner of this asset")
551551 else {
552552 let assetSheg = tryGetInteger(assetId)
553553 let tr = invoke(Address(marketplaceAddress), "putOnSale", [assetId, assetSheg, sellprice], nil)
554554 match tr {
555555 case t: Int =>
556556 [DeleteEntry(getAssetOwnerKeyString(assetId)), DeleteEntry(assetId)]
557557 case _ =>
558558 throw("Error putting the item on the marketplace")
559559 }
560560 }
561561
562562

github/deemru/w8io/026f985 
77.25 ms