tx · GokZw4JeTL857kKJRan2p3po45ro6bECWFBYASpcDd8N

3N8WDKbqGox5Eky326PHHT7rUyrby5MXdmb:  -0.03000000 Waves

2022.06.30 18:29 [2119344] smart account 3N8WDKbqGox5Eky326PHHT7rUyrby5MXdmb > SELF 0.00000000 Waves

{ "type": 13, "id": "GokZw4JeTL857kKJRan2p3po45ro6bECWFBYASpcDd8N", "fee": 3000000, "feeAssetId": null, "timestamp": 1656602939832, "version": 2, "chainId": 84, "sender": "3N8WDKbqGox5Eky326PHHT7rUyrby5MXdmb", "senderPublicKey": "FWSsBbeCwLVkekWhvNKtX6JkrZiruRybKKVuiS3F4bqN", "proofs": [ "2KTWXPMDDquLWE8GKQ5UcW9kntMayMwoXpYk8NqqsnnZe1bzpmSGzQVXHnVymMU18pmGAMub5pzBG3mdKPrNEzxW" ], "script": "base64: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AAAAAABkAwkAAGYAAAACBQAAAAphc3NldFBvd2VyAAAAAAAAAAAABAAAAAxjdXJyZW50UG93ZXIJAQAAABRuYXRpb25zVHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgUAAAAGY2FsbGVyAgAAAAZfUG93ZXIEAAAAAnB3CQAD/AAAAAQJAQAAAAdBZGRyZXNzAAAAAQUAAAAObmF0aW9uc0FkZHJlc3MCAAAADHNldFVzZXJQb3dlcgkABEwAAAACBQAAAAZjYWxsZXIJAARMAAAAAgkAAGQAAAACBQAAAAxjdXJyZW50UG93ZXIFAAAACmFzc2V0UG93ZXIFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAJwdwUAAAACcHcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACGFzc2V0S2V5BQAAAAphc3NldENvaW5zCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAEUJ1aWxkaW5nU3RhdHVzS2V5CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAD2ZpbmlzaEhlaWdodEtleQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAIYXNzZXRLZXkFAAAACmFzc2V0Q29pbnMJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAARQnVpbGRpbmdTdGF0dXNLZXkJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAPZmluaXNoSGVpZ2h0S2V5BQAAAANuaWwBAAAAE2ludGVybmFsRmluaXNoQnVpbGQAAAAGAAAABmNhbGxlcgAAAAhhc3NldFN0cgAAAAhhc3NldEtleQAAABFCdWlsZGluZ1N0YXR1c0tleQAAAA9maW5pc2hIZWlnaHRLZXkAAAANdHJhbnNhY3Rpb25JZAQAAAAGY2h1bmtzCQEAAAARZ2V0QXNzZXRUeXBlTGV2ZWwAAAABBQAAAAhhc3NldFN0cgQAAAAMc3RyQXNzZXRUeXBlCAUAAAAGY2h1bmtzAAAAAl8xBAAAAAVsZXZlbAgFAAAABmNodW5rcwAA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LAAAAAIFAAAADGFnZ3JBc3NldGtleQIAAAAGX093bmVyBQAAAAZjYWxsZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADGFnZ3JBc3NldGtleQkAAGQAAAACBQAAAAVjb2lucwUAAAAKYXNzZXRDb2lucwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAxhZ2dyQXNzZXRrZXkCAAAABF9RdHkJAABkAAAAAgUAAAADcXR5AAAAAAAAAAABCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAEUJ1aWxkaW5nU3RhdHVzS2V5CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAD2ZpbmlzaEhlaWdodEtleQUAAAADbmlsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAhhc3NldEtleQUAAAAKYXNzZXRDb2lucwkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAABFCdWlsZGluZ1N0YXR1c0tleQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAA9maW5pc2hIZWlnaHRLZXkFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAAAAD2NoZWNrQXNzZXRPd25lcgAAAAIAAAAGY2FsbGVyAAAACGFzc2V0S2V5BAAAAAphc3NldE93bmVyCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAAFmdldEFzc2V0T3duZXJLZXlTdHJpbmcAAAABBQAAAAhhc3NldEtleQkAAAAAAAACBQAAAAphc3NldE93bmVyBQAAAAZjYWxsZXIBAAAAFWlzTmF0aW9uUmVzZXJ2ZWRBc3NldAAAAAIAAAAETmFtZQAAAAVMZXZlbAQAAAABawkBAAAACGdldEFMS2V5AAAAAgUAAAAETmFtZQUAAAAFTGV2ZWwJAQAAABFjb25mVHJ5R2V0Qm9vbGVhbgAAAAEJAAEsAAAAAgUAAAABawIAAAAPX05hdGlvblJlc2VydmVkAQAAABlpbnRlcm5hbFRyYXNuZmVyT3duZXJzaGlwAAAAAgAAAAdhc3NldElkAAAACG5l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AiE9AAAAAgUAAAAIYXNzZXRTYWMIBQAAAAZjaHVua3MAAAACXzEGCQEAAAACIT0AAAACBQAAAAthc3NldFNhY2x2bAgFAAAABmNodW5rcwAAAAJfMgkAAAIAAAABAgAAAC50aGUgc2FjcmlmaWNlQXNzZXQgaGFzIHRoZSB3cm9uZyB0eXBlIG9yIGxldmVsBgEAAAAZQ2hlY2tBc3NldEJ1aWxkYWJsZU5hdGlvbgAAAAQAAAAETmFtZQAAAAVMZXZlbAAAAAlOYXRpb25LZXkAAAAMU2FjcmlmaWNlS2V5BAAAAAdjbmZnS2V5CQEAAAAIZ2V0QUxLZXkAAAACBQAAAAROYW1lBQAAAAVMZXZlbAQAAAADdGVjCQEAAAAQY29uZlRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgUAAAAHY25mZ0tleQIAAAAWX1RlY25ob2xvZ3lfZGlzY292ZXJlZAMJAQAAAAIhPQAAAAIFAAAAA3RlYwIAAAAAAwkBAAAAFG5hdGlvbnNUcnlHZXRCb29sZWFuAAAAAQkAASwAAAACCQABLAAAAAIFAAAACU5hdGlvbktleQIAAAABXwUAAAADdGVjCQEAAAAcQ2hlY2tBc3NldEJ1aWxkYWJsZVNhY3JpZmljZQAAAAMFAAAAB2NuZmdLZXkFAAAACU5hdGlvbktleQUAAAAMU2FjcmlmaWNlS2V5BwkBAAAAHENoZWNrQXNzZXRCdWlsZGFibGVTYWNyaWZpY2UAAAADBQAAAAdjbmZnS2V5BQAAAAlOYXRpb25LZXkFAAAADFNhY3JpZmljZUtleQEAAAAXQ2hlY2tBc3NldEJ1aWxkYWJsZVVzZXIAAAAEAAAABE5hbWUAAAAFTGV2ZWwAAAAGY2FsbGVyAAAADFNhY3JpZmljZUtleQQAAAAGY25mS2V5CQEAAAAIZ2V0QUxLZXkAAAACBQAAAAROYW1lBQAAAAVMZXZlbAQAAAAIbmF0aW9uSWQJAQAAABRuYXRpb25zVHJ5R2V0SW50ZWdlcgAAAAEFAAAABmNhbGxlcgMJAAAAAAAAAgUAAAAIbmF0aW9uSWQAAAAAAAAAAAAHBAAAAAN0ZWMJAQAAABBjb25mVHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACBQAAAAZjbmZLZXkCAAAAFl9UZWNuaG9sb2d5X2Rpc2NvdmVyZWQDCQEAAAACIT0AAAACBQAAAAN0ZWMCAAAAAAQAAAAJTmF0aW9uS2V5CQEAAAATbmF0aW9uc1RyeUdldFN0cmluZwAAAAEJAAGkAAAAAQUAAAAIbmF0aW9uSWQDCQEAAAAUbmF0aW9uc1RyeUdldEJvb2xlYW4AAAABCQABLAAAAAIJAAEsAAAAAgUAAAAJTmF0aW9uS2V5AgAAAAFfBQAAAAN0ZWMJAQAAABxDaGVja0Fzc2V0QnVpbGRhYmxlU2FjcmlmaWNlAAAAAwUAAAAGY25mS2V5BQAAAAZjYWxsZXIFAAAADFNhY3JpZmljZUtleQcJAQAAABxDaGVja0Fzc2V0QnVpbGRhYmxlU2FjcmlmaWNlAAAAAwUAAAAGY25mS2V5BQAAAAZjYWxsZXIFAAAADFNhY3JpZmljZUtleQEAAAATQ2hlY2tBc3NldEJ1aWxkYWJsZQAAAAUAAAAETmFtZQAAAAVMZXZlbAAAAAZDYWxsZXIAAAAJTmF0aW9uS2V5AAAADFNhY3JpZmljZUtleQMJAQAAAAIhPQAAAAIFAAAACU5hdGlvbktleQIAAAAACQEAAAAZQ2hlY2tBc3NldEJ1aWxkYWJsZU5hdGlvbgAAAAQFAAAABE5hbWUFAAAABUxldmVsBQAAAAlOYXRpb25LZXkFAAAADFNhY3JpZmljZUtleQkBAAAAF0NoZWNrQXNzZXRCdWlsZGFibGVVc2VyAAAABAUAAAAETmFtZQUAAAAFTGV2ZWwFAAAABkNhbGxlcgUAAAAMU2FjcmlmaWNlS2V5AAAACwAAAAFpAQAAAApTdGFydEJ1aWxkAAAABAAAAAxzdHJBc3NldFR5cGUAAAAFTGV2ZWwAAAAJTmF0aW9uS2V5AAAADFNhY3JpZmljZUtleQMJAQAAAAEhAAAAAQkBAAAAE0NoZWNrQXNzZXRCdWlsZGFibGUAAAAFBQAAAAxzdHJBc3NldFR5cGUFAAAABUxldmVsCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAJTmF0aW9uS2V5BQAAAAxTYWNyaWZpY2VLZXkJAAACAAAAAQIAAAAaWW91IGNhbm5vdCBidWlsZCB0aGlzIEl0ZW0EAAAAB2NuZmdLZXkJAQAAAAhnZXRBTEtleQAAAAIFAAAADHN0ckFzc2V0VHlw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AgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABpnZXRCdWlsZGluZ0ZpbmlzaEhlaWdodEtleQAAAAMJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAAdjbmZnS2V5CQAAZAAAAAIFAAAABmhlaWdodAUAAAAQZGVsYXlGb3JCdWlsZGluZwUAAAADbmlsCQAAAgAAAAECAAAAIEVycm9yIERpc3RyaWJ1dGluZyBhc3NldCByZXdhcmRzCQAAAgAAAAECAAAAHUVycm9yIERlcG9zaXRpbmcgbmF0aW9uIGZ1bmRzCQAAAgAAAAECAAAAHUVycm9yIERlcG9zaXRpbmcgbmF0aW9uIGZ1bmRzBAAAAAhhc3NldFNhYwkBAAAAEGNvbmZUcnlHZXRTdHJpbmcAAAABCQABLAAAAAIFAAAAB2NuZmdLZXkCAAAAD19TYWNyaWZpY2VBc3NldAMJAQAAAAIhPQAAAAIFAAAACGFzc2V0U2FjAgAAAAAJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAMU2FjcmlmaWNlS2V5CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgUAAAAMU2FjcmlmaWNlS2V5AgAAAAZfT3duZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFGdldEJ1aWxkaW5nU3RhdHVzS2V5AAAAAwkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAB2NuZmdLZXkFAAAADEJ1aWxkU3RhcnRlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQZ2V0QXNzZXRPd25lcktleQAAAAIIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAB2NuZmdLZXkJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAaZ2V0QnVpbGRpbmdGaW5pc2hIZWlnaHRLZXkAAAADCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcggFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAAHY25mZ0tleQkAAGQAAAACBQAAAAZoZWlnaHQFAAAAEGRlbGF5Rm9yQnVpbGRpbmcFAAAAA25pbAQAAAAIYW1vdW50SW4JAQAAAAV2YWx1ZQAAAAEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAMJAABmAAAAAgUAAAAOYXNzZXRCdWlsZENvc3QFAAAACGFtb3VudEluCQAAAgAAAAEJAAEsAAAAAgIAAAA+WW91IHByb3ZpZGVkIGxlc3MgJGhlZyB0aGFuIHRoZSBuZWVkZWQgY29zdCBmb3IgYnVpbGRpbmcgdGhpcyAFAAAADHN0ckFzc2V0VHlwZQMJAQAAAAIhPQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQFAAAACnNoaW55d2dnaWQJAAACAAAAAQIAAAAaT25seSAkSEVHIHBheW1lbnRzIGFsbG93ZWQEAAAAAnB3CQAD/AAAAAQJAQAAAAdBZGRyZXNzAAAAAQUAAAAPdHJlYXN1cnlBZGRyZXNzAgAAAAdEZXBvc2l0BQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACnNoaW55d2dnaWQFAAAADVVuaXRTdGFrZVNoZWcFAAAAA25pbAQAAAAHJG1hdGNoMAUAAAACcHcDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABcgUAAAAHJG1hdGNoMAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAUZ2V0QnVpbGRpbmdTdGF0dXNLZXkAAAADCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcggFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAAHY25mZ0tleQUAAAAMQnVpbGRTdGFydGVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBnZXRBc3NldE93bmVyS2V5AAAAAggFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAAHY25mZ0tleQkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABpnZXRCdWlsZGluZ0ZpbmlzaEhlaWdodEtleQAAAAMJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAAdjbmZnS2V5CQAAZAAAAAIFAAAABmhlaWdodAUAAAAQZGVsYXlGb3JCdWlsZGluZwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAthZG1pbldhbGxldAUAAAANVG9BZG1pbldhbGxldAUAAAAKc2hpbnl3Z2dpZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABZkYWlseUdhbWVSZXdhcmRzV2FsbGV0BQAAABNUb0dhbWVSZXdhcmRzV2FsbGV0BQAAAApzaGlueXdnZ2lkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAGWRhaWx5U3Rha2luZ1Jld2FyZHNXYWxsZXQFAAAAFlRvU3Rha2luZ1Jld2FyZHNXYWxsZXQFAAAACnNoaW55d2dnaWQFAAAAA25pbAkAAAIAAAABAgAAABdJbmNvcnJlY3QgaW52b2tlIHJlc3VsdAAAAAFpAQAAAAtGaW5pc2hCdWlsZAAAAAQAAAAHdHhJZFN0cgAAAAhhc3NldFN0cgAAAAVMZXZlbAAAAAlOYXRpb25LZXkEAAAABHR4SWQJAAJZAAAAAQUAAAAHdHhJZFN0cgQAAAAFQUxLZXkJAQAAAAhnZXRBTEtleQAAAAIFAAAACGFzc2V0U3RyBQAAAAVMZXZlbAQAAAARQnVpbGRpbmdTdGF0dXNLZXkJAQAAABRnZXRCdWlsZGluZ1N0YXR1c0tleQAAAAMJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBQAAAAVBTEtleQQAAAAPZmluaXNoSGVpZ2h0S2V5CQEAAAAaZ2V0QnVpbGRpbmdGaW5pc2hIZWlnaHRLZXkAAAADCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAUAAAAFQUxLZXkEAAAACGFzc2V0S2V5CQEAAAANZ2V0QXNzZXRJZEtleQAAAAIFAAAABHR4SWQFAAAABUFMS2V5BAAAAAphc3NldE93bmVyCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAAEGdldEFzc2V0T3duZXJLZXkAAAACBQAAAAR0eElkBQAAAAVBTEtleQMJAQAAABVpc05hdGlvblJlc2VydmVkQXNzZXQAAAACBQAAAAhhc3NldFN0cgUAAAAFTGV2ZWwDAwkBAAAAASEAAAABCQEAAAAPY2hlY2tBc3NldE93bmVyAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAACU5hdGlvbktleQkBAAAAASEAAAABCQEAAAAKY2hlY2tBZG1pbgAAAAEIBQAAAAFpAAAABmNhbGxlcgcJAAACAAAAAQIAAAAwWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uCQEAAAATaW50ZXJuYWxGaW5pc2hCdWlsZAAAAAYFAAAACU5hdGlvbktleQUAAAAFQUxLZXkFAAAACGFzc2V0S2V5BQAAABFCdWlsZGluZ1N0YXR1c0tleQUAAAAPZmluaXNoSGVpZ2h0S2V5BQAAAAR0eElkAwkBAAAAAiE9AAAAAgUAAAAKYXNzZXRPd25lcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAACAAAAAQkAASwAAAACAgAAACFZb3UgY2Fubm90IGNsYWltIG90aGVyJ3MgcGxheWVycyAFAAAACGFzc2V0U3RyBAAAABBidWlsZGluZ1R4U3RhdHVzCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQUAAAARQnVpbGRpbmdTdGF0dXNLZXkDCQAAAAAAAAIFAAAAEGJ1aWxkaW5nVHhTdGF0dXMCAAAAAAkAAAIAAAABAgAAACRObyBwZW5kaW5nIG9wZXJhdGlvbnMgZm9yIHRoaXMgYXNzZXQEAAAACGFzc2V0U2FjCQEAAAAQY29uZlRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgUAAAAFQUxLZXkCAAAAD19TYWNyaWZpY2VBc3NldAQAAAANYXNzZXRTYWNMZXZlbAkBAAAAEWNvbmZUcnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACBQAAAAVBTEtleQIAAAAUX1NhY3JpZmljZUFzc2V0TGV2ZWwDCQEAAAACIT0AAAACBQAAAAhhc3NldFNhYwIAAAAACQEAAAAcaW50ZXJuYWxTYWNyaWZpY2VGaW5pc2hCdWlsZAAAAAcJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAVBTEtleQUAAAAIYXNzZXRLZXkFAAAAEUJ1aWxkaW5nU3RhdHVzS2V5BQAAAA9maW5pc2hIZWlnaHRLZXkFAAAABHR4SWQJAQAAAAhnZXRBTEtleQAAAAIFAAAACGFzc2V0U2FjBQAAAA1hc3NldFNhY0xldmVsCQEAAAATaW50ZXJuYWxGaW5pc2hCdWlsZAAAAAYJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAVBTEtleQUAAAAIYXNzZXRLZXkFAAAAEUJ1aWxkaW5nU3RhdHVzS2V5BQAAAA9maW5pc2hIZWlnaHRLZXkFAAAABHR4SWQAAAABaQEAAAARdHJhbnNmZXJPd25lcnNoaXAAAAACAAAAB2Fzc2V0SWQAAAAIbmV3T3duZXIDCQEAAAABIQAAAAEJAQAAAApjaGVja0FkbWluAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAAAgAAAAECAAAAKU9ubHkgdGhlIGFkbWluIGNhbiBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uCQAFFAAAAAIJAQAAABlpbnRlcm5hbFRyYXNuZmVyT3duZXJzaGlwAAAAAgUAAAAHYXNzZXRJZAUAAAAIbmV3T3duZXIFAAAACG5ld093bmVyAAAAAWkBAAAAF2Rlc3Ryb3lBc3NldEFuZFRyYW5zZmVyAAAAAwAAAAdhc3NldElkAAAAA3F0eQAAAAl0b0FkZHJlc3MEAAAABmNodW5rcwkBAAAAEWdldEFzc2V0VHlwZUxldmVsAAAAAQUAAAAHYXNzZXRJZAQAAAAMc3RyQXNzZXRUeXBlCAUAAAAGY2h1bmtzAAAAAl8xBAAAAAVsZXZlbAgFAAAABmNodW5rcwAAAAJfMgQAAAABawkBAAAACGdldEFMS2V5AAAAAgUAAAAMc3RyQXNzZXRUeXBlBQAAAAVsZXZlbAMJAQAAAAEhAAAAAQkBAAAACmNoZWNrQWRtaW4AAAABCAUAAAABaQAAAAZjYWxsZXIJAAACAAAAAQIAAAApT25seSB0aGUgYWRtaW4gY2FuIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24EAAAACG9sZE93bmVyCQEAAAAMdHJ5R2V0U3Ry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", "height": 2119344, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6aGr2BgeUpMNDJHpXep1b5mR6vab6be2NtYz5YJdMpJ6 Next: GRDVgQ8tYUURwJgCs1YvNujrPQLFoB6ANhQvvSZPYPeJ Diff:
OldNewDifferences
146146
147147
148148 func internalDistrib (addressStr,amount) = {
149- let tr = invoke(Address(treasuryAddress), "adminTransfer", [addressFromStringValue(addressStr), amount], nil)
149+ let tr = invoke(Address(treasuryAddress), "addReward", [addressFromStringValue(addressStr), amount], nil)
150150 if ((tr == tr))
151151 then match tr {
152152 case t: Int =>
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 internalDistrib (addressStr,amount) = {
149- let tr = invoke(Address(treasuryAddress), "adminTransfer", [addressFromStringValue(addressStr), amount], nil)
149+ let tr = invoke(Address(treasuryAddress), "addReward", [addressFromStringValue(addressStr), amount], nil)
150150 if ((tr == tr))
151151 then match tr {
152152 case t: Int =>
153153 amount
154154 case _ =>
155155 0
156156 }
157157 else throw("Strict value is not equal to itself.")
158158 }
159159
160160
161161 func distribDestroyRewards (accum,nextValue) = {
162162 let val = split(nextValue, "_")
163163 let addr = val[0]
164164 let amnt = val[1]
165165 (accum :+ internalDistrib(addr, parseIntValue(amnt)))
166166 }
167167
168168
169169 func internalSacrificeFinishBuild (caller,assetStr,assetKey,BuildingStatusKey,finishHeightKey,transactionId,sacrificekey) = {
170170 let chunks = getAssetTypeLevel(assetStr)
171171 let strAssetType = chunks._1
172172 let level = chunks._2
173173 let buildingFinishHeight = getIntegerValue(this, finishHeightKey)
174174 if ((buildingFinishHeight > height))
175175 then throw((((("Building is not finished yet " + toString((buildingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((buildingFinishHeight - height))) + " minutes"))
176176 else if ((take(strAssetType, 4) == "TECH"))
177177 then {
178178 let discovered = invoke(Address(nationsAddress), "setTecnhnologyDiscovered", [caller, assetStr], nil)
179179 if ((discovered == true))
180180 then [DeleteEntry(BuildingStatusKey), DeleteEntry(finishHeightKey), DeleteEntry(getAssetOwnerKey(transactionId, assetStr))]
181181 else throw("error discovering technology")
182182 }
183183 else {
184184 let assetPower = confTryGetInteger((assetStr + "_Power"))
185185 let assetCoins = ((confTryGetInteger((sacrificekey + "_Cost")) * 20) / 100)
186186 if ((assetPower > 0))
187187 then {
188188 let currentPower = nationsTryGetInteger((caller + "_Power"))
189189 let pw = invoke(Address(nationsAddress), "setUserPower", [caller, (currentPower + assetPower)], nil)
190190 if ((pw == pw))
191191 then [IntegerEntry(assetKey, assetCoins), DeleteEntry(BuildingStatusKey), DeleteEntry(finishHeightKey)]
192192 else throw("Strict value is not equal to itself.")
193193 }
194194 else [IntegerEntry(assetKey, assetCoins), DeleteEntry(BuildingStatusKey), DeleteEntry(finishHeightKey)]
195195 }
196196 }
197197
198198
199199 func internalFinishBuild (caller,assetStr,assetKey,BuildingStatusKey,finishHeightKey,transactionId) = {
200200 let chunks = getAssetTypeLevel(assetStr)
201201 let strAssetType = chunks._1
202202 let level = chunks._2
203203 let buildingFinishHeight = getIntegerValue(this, finishHeightKey)
204204 if ((buildingFinishHeight > height))
205205 then throw((((("Building is not finished yet " + toString((buildingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((buildingFinishHeight - height))) + " minutes"))
206206 else if ((take(strAssetType, 4) == "TECH"))
207207 then {
208208 let discovered = invoke(Address(nationsAddress), "setTecnhnologyDiscovered", [caller, assetStr], nil)
209209 if ((discovered == true))
210210 then [DeleteEntry(BuildingStatusKey), DeleteEntry(finishHeightKey), DeleteEntry(getAssetOwnerKey(transactionId, assetStr))]
211211 else throw("error discovering technology")
212212 }
213213 else {
214214 let assetPower = confTryGetInteger((assetStr + "_Power"))
215215 let assetCoins = ((confTryGetInteger((assetStr + "_Cost")) * 20) / 100)
216216 let refCall = invoke(Address(treasuryAddress), "Pay", [caller, assetCoins], nil)
217217 if ((refCall == refCall))
218218 then if ((assetPower > 0))
219219 then {
220220 let currentPower = nationsTryGetInteger((caller + "_Power"))
221221 let pw = invoke(Address(nationsAddress), "setUserPower", [caller, (currentPower + assetPower)], nil)
222222 if ((pw == pw))
223223 then if (confTryGetBoolean((assetStr + "_Aggregated")))
224224 then {
225225 let aggrAssetkey = ((assetStr + "_") + caller)
226226 let coins = tryGetInteger(aggrAssetkey)
227227 let qty = tryGetInteger((aggrAssetkey + "_Qty"))
228228 [DeleteEntry(getAssetOwnerKey(transactionId, assetStr)), StringEntry((aggrAssetkey + "_Owner"), caller), IntegerEntry(aggrAssetkey, (coins + assetCoins)), IntegerEntry((aggrAssetkey + "_Qty"), (qty + 1)), DeleteEntry(BuildingStatusKey), DeleteEntry(finishHeightKey)]
229229 }
230230 else [IntegerEntry(assetKey, assetCoins), DeleteEntry(BuildingStatusKey), DeleteEntry(finishHeightKey)]
231231 else throw("Strict value is not equal to itself.")
232232 }
233233 else if (confTryGetBoolean((assetStr + "_Aggregated")))
234234 then {
235235 let aggrAssetkey = ((assetStr + "_") + caller)
236236 let coins = tryGetInteger(aggrAssetkey)
237237 let qty = tryGetInteger((aggrAssetkey + "_Qty"))
238238 [DeleteEntry(getAssetOwnerKey(transactionId, assetStr)), StringEntry((aggrAssetkey + "_Owner"), caller), IntegerEntry(aggrAssetkey, (coins + assetCoins)), IntegerEntry((aggrAssetkey + "_Qty"), (qty + 1)), DeleteEntry(BuildingStatusKey), DeleteEntry(finishHeightKey)]
239239 }
240240 else [IntegerEntry(assetKey, assetCoins), DeleteEntry(BuildingStatusKey), DeleteEntry(finishHeightKey)]
241241 else throw("Strict value is not equal to itself.")
242242 }
243243 }
244244
245245
246246 func checkAssetOwner (caller,assetKey) = {
247247 let assetOwner = tryGetString(getAssetOwnerKeyString(assetKey))
248248 (assetOwner == caller)
249249 }
250250
251251
252252 func isNationReservedAsset (Name,Level) = {
253253 let k = getALKey(Name, Level)
254254 confTryGetBoolean((k + "_NationReserved"))
255255 }
256256
257257
258258 func internalTrasnferOwnership (assetId,newOwner) = {
259259 let chunks = getAssetTypeLevel(assetId)
260260 let strAssetType = chunks._1
261261 let level = chunks._2
262262 let k = getALKey(strAssetType, level)
263263 let oldOwner = tryGetString(getAssetOwnerKeyString(assetId))
264264 let assetPower = confTryGetInteger((k + "_Power"))
265265 if ((assetPower > 0))
266266 then {
267267 let currentPower = nationsTryGetInteger((oldOwner + "_Power"))
268268 let pw = invoke(Address(nationsAddress), "setUserPower", [oldOwner, (currentPower - assetPower)], nil)
269269 if ((pw == pw))
270270 then if ((pw != (currentPower - assetPower)))
271271 then throw("Incorrect invoke result")
272272 else {
273273 let newcurrentPower = nationsTryGetInteger((newOwner + "_Power"))
274274 let pw2 = invoke(Address(nationsAddress), "setUserPower", [newOwner, (newcurrentPower + assetPower)], nil)
275275 if ((pw2 == pw2))
276276 then match pw2 {
277277 case r: Int =>
278278 [StringEntry(getAssetOwnerKeyString(assetId), newOwner)]
279279 case _ =>
280280 throw("Incorrect invoke result")
281281 }
282282 else throw("Strict value is not equal to itself.")
283283 }
284284 else throw("Strict value is not equal to itself.")
285285 }
286286 else [StringEntry(getAssetOwnerKeyString(assetId), newOwner)]
287287 }
288288
289289
290290 func CheckAssetBuildableSacrifice (ALKey,caller,SacrificeKey) = {
291291 let assetSac = confTryGetString((ALKey + "_SacrificeAsset"))
292292 let assetSaclvl = confTryGetInteger((ALKey + "_SacrificeAssetLevel"))
293293 if ((assetSac == ""))
294294 then true
295295 else if (!(checkAssetOwner(caller, SacrificeKey)))
296296 then throw("you are not the owner of the Sacrifice asset")
297297 else {
298298 let chunks = getAssetTypeLevel(SacrificeKey)
299299 if (if ((assetSac != chunks._1))
300300 then true
301301 else (assetSaclvl != chunks._2))
302302 then throw("the sacrificeAsset has the wrong type or level")
303303 else true
304304 }
305305 }
306306
307307
308308 func CheckAssetBuildableNation (Name,Level,NationKey,SacrificeKey) = {
309309 let cnfgKey = getALKey(Name, Level)
310310 let tec = confTryGetString((cnfgKey + "_Tecnhology_discovered"))
311311 if ((tec != ""))
312312 then if (nationsTryGetBoolean(((NationKey + "_") + tec)))
313313 then CheckAssetBuildableSacrifice(cnfgKey, NationKey, SacrificeKey)
314314 else false
315315 else CheckAssetBuildableSacrifice(cnfgKey, NationKey, SacrificeKey)
316316 }
317317
318318
319319 func CheckAssetBuildableUser (Name,Level,caller,SacrificeKey) = {
320320 let cnfKey = getALKey(Name, Level)
321321 let nationId = nationsTryGetInteger(caller)
322322 if ((nationId == 0))
323323 then false
324324 else {
325325 let tec = confTryGetString((cnfKey + "_Tecnhology_discovered"))
326326 if ((tec != ""))
327327 then {
328328 let NationKey = nationsTryGetString(toString(nationId))
329329 if (nationsTryGetBoolean(((NationKey + "_") + tec)))
330330 then CheckAssetBuildableSacrifice(cnfKey, caller, SacrificeKey)
331331 else false
332332 }
333333 else CheckAssetBuildableSacrifice(cnfKey, caller, SacrificeKey)
334334 }
335335 }
336336
337337
338338 func CheckAssetBuildable (Name,Level,Caller,NationKey,SacrificeKey) = if ((NationKey != ""))
339339 then CheckAssetBuildableNation(Name, Level, NationKey, SacrificeKey)
340340 else CheckAssetBuildableUser(Name, Level, Caller, SacrificeKey)
341341
342342
343343 @Callable(i)
344344 func StartBuild (strAssetType,Level,NationKey,SacrificeKey) = if (!(CheckAssetBuildable(strAssetType, Level, toString(i.caller), NationKey, SacrificeKey)))
345345 then throw("You cannot build this Item")
346346 else {
347347 let cnfgKey = getALKey(strAssetType, Level)
348348 let delayForBuilding = confTryGetInteger((cnfgKey + "_BuildTime"))
349349 let assetBuildCost = confTryGetInteger((cnfgKey + "_Cost"))
350350 let ToAdminWallet = ((assetBuildCost * 5) / 100)
351351 let ToGameRewardsWallet = ((assetBuildCost * 10) / 100)
352352 let ToStakingRewardsWallet = ((assetBuildCost * 65) / 100)
353353 let UnitStakeSheg = (((assetBuildCost - ToAdminWallet) - ToGameRewardsWallet) - ToStakingRewardsWallet)
354354 if (isNationReservedAsset(strAssetType, Level))
355355 then if (if (!(checkAssetOwner(toString(i.caller), NationKey)))
356356 then !(checkAdmin(i.caller))
357357 else false)
358358 then throw("You are not the owner of the nation")
359359 else {
360360 let nationsheg = treasuryTryGetInteger(getTreasuryKey(NationKey))
361361 if ((assetBuildCost > nationsheg))
362362 then throw("The nation hasn't enough funds")
363363 else {
364364 let d = invoke(Address(treasuryAddress), "decreaseNationWallet", [NationKey, assetBuildCost], nil)
365365 match d {
366366 case r: Int =>
367367 let pw = invoke(Address(treasuryAddress), "arbitraryAddCoins", [NationKey, UnitStakeSheg], nil)
368368 match pw {
369369 case b: Int =>
370370 let transfer = invoke(Address(treasuryAddress), "distributeNationPayRewards", [assetBuildCost], nil)
371371 match transfer {
372372 case t: Int =>
373373 [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))]
374374 case _ =>
375375 throw("Error Distributing asset rewards")
376376 }
377377 case _ =>
378378 throw("Error Depositing nation funds")
379379 }
380380 case _ =>
381381 throw("Error Depositing nation funds")
382382 }
383383 }
384384 }
385385 else {
386386 let assetSac = confTryGetString((cnfgKey + "_SacrificeAsset"))
387387 if ((assetSac != ""))
388388 then [DeleteEntry(SacrificeKey), DeleteEntry((SacrificeKey + "_Owner")), 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))]
389389 else {
390390 let amountIn = value(i.payments[0].amount)
391391 if ((assetBuildCost > amountIn))
392392 then throw(("You provided less $heg than the needed cost for building this " + strAssetType))
393393 else if ((i.payments[0].assetId != shinywggid))
394394 then throw("Only $HEG payments allowed")
395395 else {
396396 let pw = invoke(Address(treasuryAddress), "Deposit", nil, [AttachedPayment(shinywggid, UnitStakeSheg)])
397397 match pw {
398398 case r: Int =>
399399 [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)]
400400 case _ =>
401401 throw("Incorrect invoke result")
402402 }
403403 }
404404 }
405405 }
406406 }
407407
408408
409409
410410 @Callable(i)
411411 func FinishBuild (txIdStr,assetStr,Level,NationKey) = {
412412 let txId = fromBase58String(txIdStr)
413413 let ALKey = getALKey(assetStr, Level)
414414 let BuildingStatusKey = getBuildingStatusKey(toString(i.caller), txId, ALKey)
415415 let finishHeightKey = getBuildingFinishHeightKey(toString(i.caller), txId, ALKey)
416416 let assetKey = getAssetIdKey(txId, ALKey)
417417 let assetOwner = tryGetString(getAssetOwnerKey(txId, ALKey))
418418 if (isNationReservedAsset(assetStr, Level))
419419 then if (if (!(checkAssetOwner(toString(i.caller), NationKey)))
420420 then !(checkAdmin(i.caller))
421421 else false)
422422 then throw("You are not authorized to perform this operation")
423423 else internalFinishBuild(NationKey, ALKey, assetKey, BuildingStatusKey, finishHeightKey, txId)
424424 else if ((assetOwner != toString(i.caller)))
425425 then throw(("You cannot claim other's players " + assetStr))
426426 else {
427427 let buildingTxStatus = tryGetString(BuildingStatusKey)
428428 if ((buildingTxStatus == ""))
429429 then throw("No pending operations for this asset")
430430 else {
431431 let assetSac = confTryGetString((ALKey + "_SacrificeAsset"))
432432 let assetSacLevel = confTryGetInteger((ALKey + "_SacrificeAssetLevel"))
433433 if ((assetSac != ""))
434434 then internalSacrificeFinishBuild(toString(i.caller), ALKey, assetKey, BuildingStatusKey, finishHeightKey, txId, getALKey(assetSac, assetSacLevel))
435435 else internalFinishBuild(toString(i.caller), ALKey, assetKey, BuildingStatusKey, finishHeightKey, txId)
436436 }
437437 }
438438 }
439439
440440
441441
442442 @Callable(i)
443443 func transferOwnership (assetId,newOwner) = if (!(checkAdmin(i.caller)))
444444 then throw("Only the admin can perform this operation")
445445 else $Tuple2(internalTrasnferOwnership(assetId, newOwner), newOwner)
446446
447447
448448
449449 @Callable(i)
450450 func destroyAssetAndTransfer (assetId,qty,toAddress) = {
451451 let chunks = getAssetTypeLevel(assetId)
452452 let strAssetType = chunks._1
453453 let level = chunks._2
454454 let k = getALKey(strAssetType, level)
455455 if (!(checkAdmin(i.caller)))
456456 then throw("Only the admin can perform this operation")
457457 else {
458458 let oldOwner = tryGetString(getAssetOwnerKeyString(assetId))
459459 let assetCoins = tryGetInteger(assetId)
460460 let currentPower = nationsTryGetInteger((oldOwner + "_Power"))
461461 let assetPower = confTryGetInteger((k + "_Power"))
462462 if (confTryGetBoolean((k + "_Aggregated")))
463463 then {
464464 let unitAssetCoins = ((confTryGetInteger((k + "_Cost")) * 20) / 100)
465465 let qtyAsset = tryGetInteger((k + "_Qty"))
466466 if ((0 > (qtyAsset - qty)))
467467 then throw(("you don't have enough " + strAssetType))
468468 else {
469469 let pw = invoke(Address(nationsAddress), "setUserPower", [oldOwner, (currentPower - (assetPower * qty))], nil)
470470 match pw {
471471 case r: Int =>
472472 let attackers = split(toAddress, "#")
473473 let dist = {
474474 let $l = attackers
475475 let $s = size($l)
476476 let $acc0 = nil
477477 func $f0_1 ($a,$i) = if (($i >= $s))
478478 then $a
479479 else distribDestroyRewards($a, $l[$i])
480480
481481 func $f0_2 ($a,$i) = if (($i >= $s))
482482 then $a
483483 else throw("List size exceeds 50")
484484
485485 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
486486 }
487487 if (((qtyAsset - qty) > 0))
488488 then [IntegerEntry((k + "_Qty"), (qtyAsset - qty))]
489489 else [DeleteEntry(assetId), DeleteEntry(getAssetOwnerKeyString(assetId))]
490490 case _ =>
491491 throw("Error setting user power")
492492 }
493493 }
494494 }
495495 else {
496496 let attackers = split(toAddress, "#")
497497 let dist = {
498498 let $l = attackers
499499 let $s = size($l)
500500 let $acc0 = nil
501501 func $f0_1 ($a,$i) = if (($i >= $s))
502502 then $a
503503 else distribDestroyRewards($a, $l[$i])
504504
505505 func $f0_2 ($a,$i) = if (($i >= $s))
506506 then $a
507507 else throw("List size exceeds 50")
508508
509509 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
510510 }
511511 let pw = invoke(Address(nationsAddress), "setUserPower", [oldOwner, (currentPower - assetPower)], nil)
512512 if ((pw == pw))
513513 then match pw {
514514 case r: Int =>
515515 [DeleteEntry(assetId), DeleteEntry(getAssetOwnerKeyString(assetId))]
516516 case _ =>
517517 throw("Error setting user power")
518518 }
519519 else throw("Strict value is not equal to itself.")
520520 }
521521 }
522522 }
523523
524524
525525
526526 @Callable(i)
527527 func destroyAssetFromUser (assetId,qty) = {
528528 let chunks = getAssetTypeLevel(assetId)
529529 let strAssetType = chunks._1
530530 let level = chunks._2
531531 let k = getALKey(strAssetType, level)
532532 if (!(checkAssetOwner(toString(i.caller), assetId)))
533533 then throw("You don't own this asset")
534534 else {
535535 let assetCoins = tryGetInteger(assetId)
536536 let currentPower = nationsTryGetInteger((toString(i.caller) + "_Power"))
537537 let assetPower = confTryGetInteger((k + "_Power"))
538538 if (confTryGetBoolean((k + "_Aggregated")))
539539 then {
540540 let unitAssetCoins = ((confTryGetInteger((k + "_Cost")) * 20) / 100)
541541 let qtyAsset = tryGetInteger((k + "_Qty"))
542542 if ((0 > (qtyAsset - qty)))
543543 then throw(("you don't have enough " + strAssetType))
544544 else {
545545 let pw = invoke(Address(nationsAddress), "setUserPower", [toString(i.caller), (currentPower - (assetPower * qty))], nil)
546546 match pw {
547547 case r: Int =>
548548 let tr = invoke(Address(treasuryAddress), "adminTransfer", [toString(i.caller), (unitAssetCoins * qty)], nil)
549549 match tr {
550550 case t: Int =>
551551 if (((qtyAsset - qty) > 0))
552552 then [IntegerEntry((k + "_Qty"), (qtyAsset - qty))]
553553 else [DeleteEntry(assetId), DeleteEntry(getAssetOwnerKeyString(assetId))]
554554 case _ =>
555555 throw("Error transferring coins")
556556 }
557557 case _ =>
558558 throw("Error setting user power")
559559 }
560560 }
561561 }
562562 else {
563563 let pw = invoke(Address(nationsAddress), "setUserPower", [toString(i.caller), (currentPower - assetPower)], nil)
564564 match pw {
565565 case r: Int =>
566566 let tr = invoke(Address(treasuryAddress), "adminTransfer", [toString(i.caller), assetCoins], nil)
567567 match tr {
568568 case t: Int =>
569569 [DeleteEntry(assetId), DeleteEntry(getAssetOwnerKeyString(assetId))]
570570 case _ =>
571571 throw("Error transferring coins")
572572 }
573573 case _ =>
574574 throw("Error setting user power")
575575 }
576576 }
577577 }
578578 }
579579
580580
581581
582582 @Callable(i)
583583 func setNationOwner (nationKey,newOwner) = if (checkAdmin(i.caller))
584584 then $Tuple2([StringEntry((nationKey + "_Owner"), newOwner)], true)
585585 else {
586586 let currentOwner = tryGetString((nationKey + "_Owner"))
587587 if ((currentOwner != toString(i.caller)))
588588 then throw("You are not the nation owner")
589589 else [StringEntry((nationKey + "_Owner"), newOwner)]
590590 }
591591
592592
593593
594594 @Callable(i)
595595 func buyNationItem (assetId,NationKey) = {
596596 let chunks = getAssetTypeLevel(assetId)
597597 let strAssetType = chunks._1
598598 let level = chunks._2
599599 let k = getALKey(strAssetType, level)
600600 let n = nationsTryGetInteger(toString(i.caller))
601601 let nid = nationsTryGetInteger(NationKey)
602602 if ((n != nid))
603603 then throw("you can buy assets only from your nation")
604604 else if (!(checkAssetOwner(NationKey, assetId)))
605605 then throw("The asset does not belong to the nation")
606606 else if (!(isNationReservedAsset(strAssetType, level)))
607607 then throw("this asset cannot be sold by the nation")
608608 else {
609609 let assetPrice = confTryGetInteger((getALKey(strAssetType, level) + "_SellPrice"))
610610 let amountIn = value(i.payments[0].amount)
611611 if ((assetPrice > amountIn))
612612 then throw(("You provided less $heg than the needed cost for buying this " + strAssetType))
613613 else if ((i.payments[0].assetId != shinywggid))
614614 then throw("Only $HEG payments allowed")
615615 else {
616616 let a = invoke(Address(treasuryAddress), "increaseNationWallet", [NationKey, amountIn], nil)
617617 match a {
618618 case b: Int =>
619619 (internalTrasnferOwnership(assetId, toString(i.caller)) :+ ScriptTransfer(Address(treasuryAddress), amountIn, shinywggid))
620620 case _ =>
621621 throw("Error transferring SHEG to nations wallet")
622622 }
623623 }
624624 }
625625 }
626626
627627
628628
629629 @Callable(i)
630630 func AddAssetFromMarkeplace (assetId,oldOwner,assetSheg) = if (!(checkAdmin(i.caller)))
631631 then throw("You are not allowed to perform this operation")
632632 else $Tuple2([StringEntry(getAssetOwnerKeyString(assetId), oldOwner), IntegerEntry(assetId, assetSheg)], oldOwner)
633633
634634
635635
636636 @Callable(i)
637637 func TransferAssetToMarketplace (assetId,sellprice) = if (!(checkAssetOwner(toString(i.caller), assetId)))
638638 then throw("You are not the owner of this asset")
639639 else {
640640 let assetSheg = tryGetInteger(assetId)
641641 let tr = invoke(Address(marketplaceAddress), "putOnSale", [assetId, assetSheg, sellprice], nil)
642642 match tr {
643643 case t: Int =>
644644 [DeleteEntry(getAssetOwnerKeyString(assetId)), DeleteEntry(assetId)]
645645 case _ =>
646646 throw("Error putting the item on the marketplace")
647647 }
648648 }
649649
650650
651651
652652 @Callable(i)
653653 func DelKey (key) = if (!(checkAdmin(i.caller)))
654654 then throw("")
655655 else [DeleteEntry(key)]
656656
657657
658658
659659 @Callable(i)
660660 func UpdKey (key,val) = if (!(checkAdmin(i.caller)))
661661 then throw("")
662662 else [StringEntry(key, val)]
663663
664664

github/deemru/w8io/026f985 
70.42 ms