tx · HnfzuHnfntP9fksk1np26Xf77C5yezs1bQAwNPQRmCwW

3PA7Ltf9QeX5H95FoGqgsPnyRNsa1Q7a8A8:  -0.01000000 Waves

2022.02.11 18:40 [2984223] smart account 3PA7Ltf9QeX5H95FoGqgsPnyRNsa1Q7a8A8 > SELF 0.00000000 Waves

{ "type": 13, "id": "HnfzuHnfntP9fksk1np26Xf77C5yezs1bQAwNPQRmCwW", "fee": 1000000, "feeAssetId": null, "timestamp": 1644594060552, "version": 2, "chainId": 87, "sender": "3PA7Ltf9QeX5H95FoGqgsPnyRNsa1Q7a8A8", "senderPublicKey": "8znHEexmcGCGdFwoyxjvgTj4YUke8B5whsVWAtXrohML", "proofs": [ "5Dg5NcWomRKcnesYsiSaT6gYdDPnYyyS56AKqTJ2pBtpPbTKepKoAhxPyyReirDcj8uEyrauJWoRg1QgX6soYnVh" ], "script": "base64:AAIFAAAAAAAAABUIAhIDCgEIEgMKARgSAwoBBBIAEgAAAAARAAAAAApzaGlueXdnZ2lkAQAAACCGKLEZX4aTB7txPBRrEZbfW42EKb/sqd2HQ6Im8j0hDgAAAAAMYWRtaW5BZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABAgAAACMzUDlvdFM1cFBCN0JDa3BWR29wdkVDZGFSQVdONGc4VjdTQgAAAAATbWF4VG9rZW5zcGVyQWRkcmVzcwAAAAkYTnKgAAAAAAAQbWluVG9rZW5zUmVzZXJ2ZQAAAAAAO5rKAAAAAAAEdXNkTgEAAAAgtiYpwwT1zlORpA5LdSQvZIxRsfrfr1QpvUjSHSqyqtEAAAAAA0VnZwEAAAAgo59/TyNyUdEs4iGSYohNDAvz6iJugdWv/AuTF85tsckAAAAACGFzc2V0SWRzCQAETAAAAAIFAAAABHVuaXQJAARMAAAAAgUAAAAEdXNkTgkABEwAAAACBQAAAANFZ2cFAAAAA25pbAAAAAANQXNzZXRzV2VpZ2h0cwkABEwAAAACAAAAAAAAAAAUCQAETAAAAAIAAAAAAAAAAA8JAARMAAAAAgAAAAAAAAAACgUAAAADbmlsAAAAAAhEZWNpbWFscwkABEwAAAACAAAAAAAAAAAICQAETAAAAAIAAAAAAAAAAAYJAARMAAAAAgAAAAAAAAAACAUAAAADbmlsAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIAAAAAAAAAAAABAAAADXRyeUdldEJvb2xlYW4AAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBsAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIHAQAAAA5nZXRBc3NldFN0cmluZwAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABYgUAAAAHJG1hdGNoMAkAAlgAAAABBQAAAAFiAgAAAAVXQVZFUwEAAAASY2FsY3VsYXRlVXNkblZhbHVlAAAAAgAAAAdhc3NldElkAAAABmFtb3VudAQAAAAKdXNkbldlaWdodAkAAZEAAAACBQAAAA1Bc3NldHNXZWlnaHRzCQEAAAAFdmFsdWUAAAABCQAETwAAAAIFAAAACGFzc2V0SWRzBQAAAAR1c2ROBAAAAAthc3NldFdlaWdodAkAAZEAAAACBQAAAA1Bc3NldHNXZWlnaHRzCQEAAAAFdmFsdWUAAAABCQAETwAAAAIFAAAACGFzc2V0SWRzBQAAAAdhc3NldElkBAAAAA1wdXp6bGVhZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABAQAAABoBV4LO3M3ldfCapQxtvNBliIgYnL69lTD/swQAAAALdXNkbkJhbGFuY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAADXB1enpsZWFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAAAdnbG9iYWxfCQEAAAAOZ2V0QXNzZXRTdHJpbmcAAAABBQAAAAR1c2ROAgAAAAhfYmFsYW5jZQQAAAAIYUJhbGFuY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAADXB1enpsZWFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAAAdnbG9iYWxfCQEAAAAOZ2V0QXNzZXRTdHJpbmcAAAABBQAAAAdhc3NldElkAgAAAAhfYmFsYW5jZQkAAGsAAAADBQAAAAZhbW91bnQJAABpAAAAAgUAAAALdXNkbkJhbGFuY2UFAAAACnVzZG5XZWlnaHQJAABpAAAAAgUAAAAIYUJhbGFuY2UFAAAAC2Fzc2V0V2VpZ2h0AQAAAA1pc0dhbWVTdGFydGVkAAAAAAkBAAAADXRyeUdldEJvb2xlYW4AAAABAgAAAAxHYW1lX1N0YXJ0ZWQBAAAADWlzV2hpdGVMaXN0ZWQAAAABAAAACmFkZHJlc3NTdHIJAQAAAA10cnlHZXRCb29sZWFuAAAAAQkAASwAAAACBQAAAAphZGRyZXNzU3RyAgAAAAxfd2hpdGVMaXN0ZWQBAAAAEWNhbGNUb2tlbnRvUmVkZWVtAAAAAgAAAARhbW50AAAACmFkZHJlc3NTdHIEAAAAC3N0YXJ0SGVpZ2h0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAADFN0YXJ0X0hlaWdodAQAAAAIcmVkZWVtZWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACBQAAAAphZGRyZXNzU3RyAgAAAAlfUmVkZWVtZWQDCQAAAAAAAAIFAAAAC3N0YXJ0SGVpZ2h0AAAAAAAAAAAACQAAAgAAAAECAAAAF1JlZGVlbSB0aW1lIG5vdCBzdGFydGVkBAAAAAhibG9ja251bQkAAGgAAAACAAAAAAAAAAWgAAAAAAAAAAC0AwkAAGYAAAACCAUAAAAJbGFzdEJsb2NrAAAABmhlaWdodAkAAGQAAAACBQAAAAtzdGFydEhlaWdodAUAAAAIYmxvY2tudW0JAABlAAAAAgUAAAAEYW1udAUAAAAIcmVkZWVtZWQEAAAACHBlcmJsb2NrCQAAawAAAAMFAAAABGFtbnQAAAAAAAAAAAEFAAAACGJsb2NrbnVtCQAAZQAAAAIJAABoAAAAAgkAAGUAAAACCAUAAAAJbGFzdEJsb2NrAAAABmhlaWdodAUAAAALc3RhcnRIZWlnaHQFAAAACHBlcmJsb2NrBQAAAAhyZWRlZW1lZAEAAAAOYWRkU3RyaW5nRW50cnkAAAACAAAABWFjY3VtAAAACW5leHRWYWx1ZQkABE0AAAACBQAAAAVhY2N1bQkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgUAAAAJbmV4dFZhbHVlAgAAAAxfd2hpdGVMaXN0ZWQGAAAABQAAAAFpAQAAAA5hZGRUb1doaXRlTGlzdAAAAAEAAAAKYWRkcmVzc1N0cgMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAADB5b3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24JAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgUAAAAKYWRkcmVzc1N0cgIAAAAMX3doaXRlTGlzdGVkBgUAAAADbmlsAAAAAWkBAAAAFmFkZFRvTXVsdGlwbGVXaGl0ZUxpc3QAAAABAAAACWFkZHJlc3NlcwMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAADB5b3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24EAAAABWxzaXplCQABkAAAAAEFAAAACWFkZHJlc3NlcwMJAABmAAAAAgUAAAAFbHNpemUAAAAAAAAAAAoJAAACAAAAAQIAAAAoeW91IGNhbiBpbnNlcnQgbWF4IDEwIGFkZHJlc3NlcyBwZXIgdGltZQkABE0AAAACCgAAAAACJGwFAAAACWFkZHJlc3NlcwoAAAAAAiRzCQABkAAAAAEFAAAAAiRsCgAAAAAFJGFjYzAFAAAAA25pbAoBAAAABSRmMF8xAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkBAAAADmFkZFN0cmluZ0VudHJ5AAAAAgUAAAACJGEJAAGRAAAAAgUAAAACJGwFAAAAAiRpCgEAAAAFJGYwXzIAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQAAAgAAAAECAAAAFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEAAAAFJGYwXzIAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACBQAAAAUkYWNjMAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgkBAAAADEJvb2xlYW5FbnRyeQAAAAICAAAAEHdoaXRlbGlzdFdyaXR0ZW4GAAAAAWkBAAAADHNldFN0YXJ0R2FtZQAAAAEAAAAFc3RhcnQDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAweW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACAgAAAAxHYW1lX1N0YXJ0ZWQFAAAABXN0YXJ0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxTdGFydF9IZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAGaGVpZ2h0BQAAAANuaWwAAAABaQEAAAANcmVzZXJ2ZVRva2VucwAAAAADCQEAAAANaXNHYW1lU3RhcnRlZAAAAAAJAAACAAAAAQIAAAAfVGhlIHByZS1zYWxlIHRpbWUgaGFzIGZpbmlzaGVkIQQAAAAKYWRkcmVzc1N0cgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAAndsCQEAAAANaXNXaGl0ZUxpc3RlZAAAAAEFAAAACmFkZHJlc3NTdHIDCQEAAAABIQAAAAEFAAAAAndsCQAAAgAAAAECAAAAGHlvdSBhcmUgbm90IHdoaXRlbGlzdGVkIQQAAAADcG10CQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAwkAAAAAAAACBQAAAANwbXQFAAAAA3BtdAQAAAAIYW1vdW50SW4JAQAAAAV2YWx1ZQAAAAEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAMJAAAAAAAAAgUAAAAIYW1vdW50SW4FAAAACGFtb3VudEluBAAAAAdhc3NldEluCAUAAAADcG10AAAAB2Fzc2V0SWQDCQAAAAAAAAIFAAAAB2Fzc2V0SW4FAAAAB2Fzc2V0SW4DCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAhhc3NldElkcwUAAAAHYXNzZXRJbgkAAAIAAAABAgAAACFPTkxZIFVTRE4sIFdBVkVTIGFuZCBFR0dTIEFMTE9XRUQEAAAABWluZGV4CQAETwAAAAIFAAAACGFzc2V0SWRzBQAAAAdhc3NldEluBAAAAANkZWMJAAGRAAAAAgUAAAAIRGVjaW1hbHMJAQAAAAV2YWx1ZQAAAAEFAAAABWluZGV4BAAAAARkaWZmCQAAZQAAAAIAAAAAAAAAAAgFAAAAA2RlYwQAAAAEY29udgkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAAARkaWZmAAAAAAAAAAAAAAAAAAAAAAAABQAAAAVGTE9PUgQAAAAEbXVsdAkBAAAAEmNhbGN1bGF0ZVVzZG5WYWx1ZQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAAANkZWMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABUZMT09SBAAAAA5yZXNlcnZlZEFtb3VudAkAAGgAAAACBQAAAAhhbW91bnRJbgUAAAAEY29udgMJAAAAAAAAAgUAAAAOcmVzZXJ2ZWRBbW91bnQFAAAADnJlc2VydmVkQW1vdW50BAAAAA9jb252ZXJ0ZWRBbW91bnQJAABrAAAAAwUAAAAOcmVzZXJ2ZWRBbW91bnQFAAAABG11bHQAAAAAAAAPQkADCQAAAAAAAAIFAAAAD2NvbnZlcnRlZEFtb3VudAUAAAAPY29udmVydGVkQW1vdW50BAAAAA9hbHJlYWR5UmVzZXJ2ZWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACBQAAAAphZGRyZXNzU3RyAgAAAAlfUmVzZXJ2ZWQDCQAAAAAAAAIFAAAAD2FscmVhZHlSZXNlcnZlZAUAAAAPYWxyZWFkeVJlc2VydmVkBAAAAA5nbG9iYWxyZXNlcnZlZAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAA9nbG9iYWxfcmVzZXJ2ZWQEAAAAD3JlbWFpbmluZ1Rva2VucwkAAGUAAAACCQAD8AAAAAIFAAAABHRoaXMFAAAACnNoaW55d2dnaWQFAAAADmdsb2JhbHJlc2VydmVkAwkAAGYAAAACBQAAABBtaW5Ub2tlbnNSZXNlcnZlBQAAAA9jb252ZXJ0ZWRBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAFlRoZSBtaW5pbXVtIGFtb3VudCBpcyAJAAGkAAAAAQkAAGsAAAADBQAAABBtaW5Ub2tlbnNSZXNlcnZlAAAAAAAAAAABAAAAAAAF9eEAAgAAAAUgJEhFRwMJAABnAAAAAgAAAAAAAAAAAAUAAAAPcmVtYWluaW5nVG9rZW5zCQAAAgAAAAECAAAAGFByZXNhbGUgaXMgb3V0IG9mIHN0b2NrIQMJAABmAAAAAgUAAAAPY29udmVydGVkQW1vdW50BQAAAA9yZW1haW5pbmdUb2tlbnMJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAFFlvdSBjYW4gcmVzZXJ2ZSBvbmx5CQABpAAAAAEJAABrAAAAAwUAAAAPcmVtYWluaW5nVG9rZW5zAAAAAAAAAAABAAAAAAAF9eEAAgAAAAUgJEhFRwQAAAAKcmVzZXJ2YWJsZQkAAGUAAAACBQAAABNtYXhUb2tlbnNwZXJBZGRyZXNzBQAAAA9hbHJlYWR5UmVzZXJ2ZWQDCQAAZgAAAAIFAAAAD2NvbnZlcnRlZEFtb3VudAUAAAAKcmVzZXJ2YWJsZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAUWW91IGNhbiByZXNlcnZlIG1heCAJAAGkAAAAAQkAAGsAAAADBQAAAApyZXNlcnZhYmxlAAAAAAAAAAABAAAAAAAF9eEAAgAAAAUgJEhFRwQAAAAQcmVtYWluaW5nVG9rZW5zMgkAAGUAAAACBQAAAA9yZW1haW5pbmdUb2tlbnMFAAAAD2NvbnZlcnRlZEFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAPZ2xvYmFsX3Jlc2VydmVkCQAAZQAAAAIFAAAADmdsb2JhbHJlc2VydmVkBQAAAA9jb252ZXJ0ZWRBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAKYWRkcmVzc1N0cgIAAAAJX1Jlc2VydmVkCQAAZAAAAAIFAAAAD2NvbnZlcnRlZEFtb3VudAUAAAAPYWxyZWFkeVJlc2VydmVkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADGFkbWluQWRkcmVzcwUAAAAIYW1vdW50SW4IBQAAAANwbXQAAAAHYXNzZXRJZAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAABnJlZGVlbQAAAAADCQEAAAABIQAAAAEJAQAAAA1pc0dhbWVTdGFydGVkAAAAAAkAAAIAAAABAgAAAC5DYW5ub3QgcmVkZWVtIGFueXRoaW5nIGJlZm9yZSB0aGUgZ2FtZSBzdGFydHMhBAAAAAphZGRyZXNzU3RyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAOcmVzZXJ2ZWRBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACBQAAAAphZGRyZXNzU3RyAgAAAAlfUmVzZXJ2ZWQEAAAACHJlZGVlbWVkCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgUAAAAKYWRkcmVzc1N0cgIAAAAJX1JlZGVlbWVkAwkAAAAAAAACBQAAAA5yZXNlcnZlZEFtb3VudAAAAAAAAAAAAAkAAAIAAAABAgAAABFOb3RoaW5nIHRvIHJlZGVlbQQAAAAIdG9SZWRlZW0JAQAAABFjYWxjVG9rZW50b1JlZGVlbQAAAAIFAAAADnJlc2VydmVkQW1vdW50BQAAAAphZGRyZXNzU3RyBAAAAAlyZW1haW5pbmcJAABlAAAAAgUAAAAOcmVzZXJ2ZWRBbW91bnQFAAAACHJlZGVlbWVkAwkAAAAAAAACBQAAAAh0b1JlZGVlbQAAAAAAAAAAAAkAAAIAAAABAgAAAGFObyBTSEVHIHRvIHJlZGVlbSwgeW91IG1heSBoYXZlIHJlZGVlbWVkIGFsbCB5b3VyIFNIRUcgb3IgeW91IGhhdmUgdG8gd2FpdCBhdCBsZWFzdCBhbm90aGVyIGJsb2NrAwkAAGcAAAACBQAAAAlyZW1haW5pbmcFAAAACHRvUmVkZWVtCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAACmFkZHJlc3NTdHICAAAACV9SZWRlZW1lZAkAAGQAAAACBQAAAAhyZWRlZW1lZAUAAAAIdG9SZWRlZW0JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAh0b1JlZGVlbQUAAAAKc2hpbnl3Z2dpZAUAAAADbmlsCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABN5b3UgY2FuIHJlZGVlbSBtYXggCQABpAAAAAEJAABrAAAAAwUAAAAJcmVtYWluaW5nAAAAAAAAAAABAAAAAAAF9eEAAgAAAAUgU0hFRwAAAADAOOPd", "height": 2984223, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ETM2cHQhS1iN6izVZu3EsV3LKMXzWVHybWNdcCmT84j2 Next: Ed6bwYAm1roYvR8h29MBuFSrBZsuBiRrtxUt1WFJiLFm Diff:
OldNewDifferences
4646 func calculateUsdnValue (assetId,amount) = {
4747 let usdnWeight = AssetsWeights[value(indexOf(assetIds, usdN))]
4848 let assetWeight = AssetsWeights[value(indexOf(assetIds, assetId))]
49- let usdnBalance = getIntegerValue(addressFromPublicKey(base58'3PDrYPF6izza2sXWffzTPF7e2Fcir2CMpki'), (("global_" + getAssetString(usdN)) + "_balance"))
50- let aBalance = getIntegerValue(addressFromPublicKey(base58'3PDrYPF6izza2sXWffzTPF7e2Fcir2CMpki'), (("global_" + getAssetString(assetId)) + "_balance"))
49+ let puzzleaddress = addressFromPublicKey(base58'3PDrYPF6izza2sXWffzTPF7e2Fcir2CMpki')
50+ let usdnBalance = getIntegerValue(puzzleaddress, (("global_" + getAssetString(usdN)) + "_balance"))
51+ let aBalance = getIntegerValue(puzzleaddress, (("global_" + getAssetString(assetId)) + "_balance"))
5152 fraction(amount, (usdnBalance / usdnWeight), (aBalance / assetWeight))
5253 }
5354
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let shinywggid = base58'A2hcw6RV23Fc8Y8FNfV35Sq5QeS9Tgp6n8hbrESiRvXX'
55
66 let adminAddress = addressFromStringValue("3P9otS5pPB7BCkpVGopvECdaRAWN4g8V7SB")
77
88 let maxTokensperAddress = 10000000000000
99
1010 let minTokensReserve = 1000000000
1111
1212 let usdN = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
1313
1414 let Egg = base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'
1515
1616 let assetIds = [unit, usdN, Egg]
1717
1818 let AssetsWeights = [20, 15, 10]
1919
2020 let Decimals = [8, 6, 8]
2121
2222 func tryGetInteger (key) = match getInteger(this, key) {
2323 case b: Int =>
2424 b
2525 case _ =>
2626 0
2727 }
2828
2929
3030 func tryGetBoolean (key) = match getBoolean(this, key) {
3131 case b: Boolean =>
3232 b
3333 case _ =>
3434 false
3535 }
3636
3737
3838 func getAssetString (assetId) = match assetId {
3939 case b: ByteVector =>
4040 toBase58String(b)
4141 case _ =>
4242 "WAVES"
4343 }
4444
4545
4646 func calculateUsdnValue (assetId,amount) = {
4747 let usdnWeight = AssetsWeights[value(indexOf(assetIds, usdN))]
4848 let assetWeight = AssetsWeights[value(indexOf(assetIds, assetId))]
49- let usdnBalance = getIntegerValue(addressFromPublicKey(base58'3PDrYPF6izza2sXWffzTPF7e2Fcir2CMpki'), (("global_" + getAssetString(usdN)) + "_balance"))
50- let aBalance = getIntegerValue(addressFromPublicKey(base58'3PDrYPF6izza2sXWffzTPF7e2Fcir2CMpki'), (("global_" + getAssetString(assetId)) + "_balance"))
49+ let puzzleaddress = addressFromPublicKey(base58'3PDrYPF6izza2sXWffzTPF7e2Fcir2CMpki')
50+ let usdnBalance = getIntegerValue(puzzleaddress, (("global_" + getAssetString(usdN)) + "_balance"))
51+ let aBalance = getIntegerValue(puzzleaddress, (("global_" + getAssetString(assetId)) + "_balance"))
5152 fraction(amount, (usdnBalance / usdnWeight), (aBalance / assetWeight))
5253 }
5354
5455
5556 func isGameStarted () = tryGetBoolean("Game_Started")
5657
5758
5859 func isWhiteListed (addressStr) = tryGetBoolean((addressStr + "_whiteListed"))
5960
6061
6162 func calcTokentoRedeem (amnt,addressStr) = {
6263 let startHeight = tryGetInteger("Start_Height")
6364 let redeemed = tryGetInteger((addressStr + "_Redeemed"))
6465 if ((startHeight == 0))
6566 then throw("Redeem time not started")
6667 else {
6768 let blocknum = (1440 * 180)
6869 if ((lastBlock.height > (startHeight + blocknum)))
6970 then (amnt - redeemed)
7071 else {
7172 let perblock = fraction(amnt, 1, blocknum)
7273 (((lastBlock.height - startHeight) * perblock) - redeemed)
7374 }
7475 }
7576 }
7677
7778
7879 func addStringEntry (accum,nextValue) = (accum :+ BooleanEntry((nextValue + "_whiteListed"), true))
7980
8081
8182 @Callable(i)
8283 func addToWhiteList (addressStr) = if ((i.caller != this))
8384 then throw("you are not authorized to perform this operation")
8485 else [BooleanEntry((addressStr + "_whiteListed"), true)]
8586
8687
8788
8889 @Callable(i)
8990 func addToMultipleWhiteList (addresses) = if ((i.caller != this))
9091 then throw("you are not authorized to perform this operation")
9192 else {
9293 let lsize = size(addresses)
9394 if ((lsize > 10))
9495 then throw("you can insert max 10 addresses per time")
9596 else ({
9697 let $l = addresses
9798 let $s = size($l)
9899 let $acc0 = nil
99100 func $f0_1 ($a,$i) = if (($i >= $s))
100101 then $a
101102 else addStringEntry($a, $l[$i])
102103
103104 func $f0_2 ($a,$i) = if (($i >= $s))
104105 then $a
105106 else throw("List size exceeds 10")
106107
107108 $f0_2($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)
108109 } :+ BooleanEntry("whitelistWritten", true))
109110 }
110111
111112
112113
113114 @Callable(i)
114115 func setStartGame (start) = if ((i.caller != this))
115116 then throw("you are not authorized to perform this operation")
116117 else [BooleanEntry("Game_Started", start), IntegerEntry("Start_Height", lastBlock.height)]
117118
118119
119120
120121 @Callable(i)
121122 func reserveTokens () = if (isGameStarted())
122123 then throw("The pre-sale time has finished!")
123124 else {
124125 let addressStr = toString(i.caller)
125126 let wl = isWhiteListed(addressStr)
126127 if (!(wl))
127128 then throw("you are not whitelisted!")
128129 else {
129130 let pmt = i.payments[0]
130131 if ((pmt == pmt))
131132 then {
132133 let amountIn = value(i.payments[0].amount)
133134 if ((amountIn == amountIn))
134135 then {
135136 let assetIn = pmt.assetId
136137 if ((assetIn == assetIn))
137138 then if (!(containsElement(assetIds, assetIn)))
138139 then throw("ONLY USDN, WAVES and EGGS ALLOWED")
139140 else {
140141 let index = indexOf(assetIds, assetIn)
141142 let dec = Decimals[value(index)]
142143 let diff = (8 - dec)
143144 let conv = pow(10, 0, diff, 0, 0, FLOOR)
144145 let mult = calculateUsdnValue(pmt.assetId, pow(10, 0, dec, 0, 0, FLOOR))
145146 let reservedAmount = (amountIn * conv)
146147 if ((reservedAmount == reservedAmount))
147148 then {
148149 let convertedAmount = fraction(reservedAmount, mult, 1000000)
149150 if ((convertedAmount == convertedAmount))
150151 then {
151152 let alreadyReserved = tryGetInteger((addressStr + "_Reserved"))
152153 if ((alreadyReserved == alreadyReserved))
153154 then {
154155 let globalreserved = tryGetInteger("global_reserved")
155156 let remainingTokens = (assetBalance(this, shinywggid) - globalreserved)
156157 if ((minTokensReserve > convertedAmount))
157158 then throw((("The minimum amount is " + toString(fraction(minTokensReserve, 1, 100000000))) + " $HEG"))
158159 else if ((0 >= remainingTokens))
159160 then throw("Presale is out of stock!")
160161 else if ((convertedAmount > remainingTokens))
161162 then throw((("You can reserve only" + toString(fraction(remainingTokens, 1, 100000000))) + " $HEG"))
162163 else {
163164 let reservable = (maxTokensperAddress - alreadyReserved)
164165 if ((convertedAmount > reservable))
165166 then throw((("You can reserve max " + toString(fraction(reservable, 1, 100000000))) + " $HEG"))
166167 else {
167168 let remainingTokens2 = (remainingTokens - convertedAmount)
168169 [IntegerEntry("global_reserved", (globalreserved - convertedAmount)), IntegerEntry((addressStr + "_Reserved"), (convertedAmount + alreadyReserved)), ScriptTransfer(adminAddress, amountIn, pmt.assetId)]
169170 }
170171 }
171172 }
172173 else throw("Strict value is not equal to itself.")
173174 }
174175 else throw("Strict value is not equal to itself.")
175176 }
176177 else throw("Strict value is not equal to itself.")
177178 }
178179 else throw("Strict value is not equal to itself.")
179180 }
180181 else throw("Strict value is not equal to itself.")
181182 }
182183 else throw("Strict value is not equal to itself.")
183184 }
184185 }
185186
186187
187188
188189 @Callable(i)
189190 func redeem () = if (!(isGameStarted()))
190191 then throw("Cannot redeem anything before the game starts!")
191192 else {
192193 let addressStr = toString(i.caller)
193194 let reservedAmount = tryGetInteger((addressStr + "_Reserved"))
194195 let redeemed = tryGetInteger((addressStr + "_Redeemed"))
195196 if ((reservedAmount == 0))
196197 then throw("Nothing to redeem")
197198 else {
198199 let toRedeem = calcTokentoRedeem(reservedAmount, addressStr)
199200 let remaining = (reservedAmount - redeemed)
200201 if ((toRedeem == 0))
201202 then throw("No SHEG to redeem, you may have redeemed all your SHEG or you have to wait at least another block")
202203 else if ((remaining >= toRedeem))
203204 then [IntegerEntry((addressStr + "_Redeemed"), (redeemed + toRedeem)), ScriptTransfer(i.caller, toRedeem, shinywggid)]
204205 else throw((("you can redeem max " + toString(fraction(remaining, 1, 100000000))) + " SHEG"))
205206 }
206207 }
207208
208209

github/deemru/w8io/3ef1775 
48.78 ms