tx · 8oNhYXVoHCW257sF3FavVcLbTVipu7JgHMGp8fh5SX1F

3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv:  -0.00600000 Waves

2024.09.12 20:21 [3280713] smart account 3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv > SELF 0.00000000 Waves

{ "type": 13, "id": "8oNhYXVoHCW257sF3FavVcLbTVipu7JgHMGp8fh5SX1F", "fee": 600000, "feeAssetId": null, "timestamp": 1726161795043, "version": 2, "chainId": 84, "sender": "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv", "senderPublicKey": "2fNSk5gmWbXBDTkSYSKd66xSgVvAYzrJnP9YSAFNvTwC", "proofs": [ "27hwHQaR2F4r4dTe2hYTSihDXtNi6dY7fbYgyhrH1NfWCZNhmZrHhcbGCcgVGrxwjWRtqp1iL5TxxYW9TW7Lq8LE" ], "script": "base64:BgIRCAISAwoBGBIDCgEIEgMKAQghAANTRVACAl9fAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQAWZGVmYXVsdFJlc3QyQWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BGd1l0YThiaUV6MzF6cGVGZTVESks4d0U1dHJTcFFWRjgDCQAAAgEBVAUHJG1hdGNoMAIjM043VXVZYXI2MjY0UDU4RkJoVldLUFFBaDRZdWEyaGduZ3YJAAIBAg1Vbmtub3duIGNoYWluABVvbGRTdGFraW5nQ29udHJhY3RTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQTG5jWHRTMVU4M0Q2Y1FiRkQzSDhyQkhQTGd6eFNGS1oxAwkAAAIBAVQFByRtYXRjaDACIzNOREN5Qkc1cTg1SnVhUmlpZ1VlRXRhaW55akNRVDNYcFptCQACAQINVW5rbm93biBjaGFpbgEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgAAEElkeENmZ0FjcmVzMkRhcHAAAQANSWR4Q2ZnV2xnRGFwcAACAQprZXlSZXN0Q2ZnAAIOJXNfX3Jlc3RDb25maWcBD2tleVJlc3QyQWRkcmVzcwACDSVzX19yZXN0MkFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAghyZXN0MkNmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCHJlc3QyQ2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAANcmVzdDJDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEPa2V5UmVzdDJBZGRyZXNzAAUWZGVmYXVsdFJlc3QyQWRkcmVzc1N0cgAIcmVzdDJDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDXJlc3QyQ29udHJhY3QADmFjcmVzMkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFEElkeENmZ0FjcmVzMkRhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFDUlkeENmZ1dsZ0RhcHAAE29sZEFjcmVzQ29udHJhY3RLZXkCEG9sZEFjcmVzQ29udHJhY3QBEWtleUxhc3RUeElkQnlVc2VyAQRhZGRyCQCsAgICD2xhc3RUeElkQnlVc2VyXwUEYWRkcgANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0AA9hY3Jlc0Fzc2V0SWRLZXkCDGFjcmVzQXNzZXRJZAAMYWNyZXNBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgUOYWNyZXMyQ29udHJhY3QFD2FjcmVzQXNzZXRJZEtleQIXQUNSRVMgaXMgbm90IGlzc3VlZCB5ZXQBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBGFkZHIJAKwCAgIYYWNjb3VudEN1c3RvbU5hbWVCeUFkZHJfBQRhZGRyAQ9rZXlBZGRyZXNzUmVmQnkBBGFkZHIJAKwCAgIJYWNjUmVmQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBDGFzVHVwbGU0SW50cwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIUKEludCwgSW50LCBJbnQsIEludCkEAXQFByRtYXRjaDAFAXQJAAIBAiZmYWlsIHRvIGNhc3QgaW50byAoSW50LCBJbnQsIEludCwgSW50KQEMYXNUdXBsZTNJbnRzAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAg8oSW50LCBJbnQsIEludCkEAXQFByRtYXRjaDAFAXQJAAIBAiFmYWlsIHRvIGNhc3QgaW50byAoSW50LCBJbnQsIEludCkBDGFzVHVwbGUySW50cwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIKKEludCwgSW50KQQBdAUHJG1hdGNoMAUBdAkAAgECHGZhaWwgdG8gY2FzdCBpbnRvIChJbnQsIEludCkAA004XwCAwtcvARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEEYWRkcgkArAICAhhhY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcl8FBGFkZHIABmxldmVscwkAzAgCAAoJAMwIAgAUCQDMCAIAKAkAzAgCAFAJAMwIAgCWAQkAzAgCAPoBCQDMCAIAkAMJAMwIAgC8BQkAzAgCAOgHBQNuaWwBD2dldExldmVsQnlBY3JlcwEFYWNyZXMEA2FjcgkAaQIFBWFjcmVzBQNNOF8KAQdjaGVja2VyAgNhY2MEaXRlbQMJAGYCBQRpdGVtBQNhY3IFA2FjYwkAZAIFA2FjYwABBANpZHgKAAIkbAUGbGV2ZWxzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdjaGVja2VyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQBkAgUDaWR4AAEBDndhbGxldEludGVybmFsAQ51c2VyQWRkcmVzc09wdAQEYWRkcgkApggBBQ51c2VyQWRkcmVzc09wdAQHYmFsYW5jZQMJAQlpc0RlZmluZWQBBQRhZGRyCQDvBwEJAQV2YWx1ZQEFBGFkZHIJAQ5CYWxhbmNlRGV0YWlscwQAAAAAAAAAAAQNd2xnb2xkQmFsYW5jZQMJAQlpc0RlZmluZWQBBQRhZGRyCQDwBwIJAQV2YWx1ZQEFBGFkZHIFCndsZ0Fzc2V0SWQAAAQKY3VzdG9tTmFtZQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ5hY3JlczJDb250cmFjdAkBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBQ51c2VyQWRkcmVzc09wdAUOdXNlckFkZHJlc3NPcHQECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUOdXNlckFkZHJlc3NPcHQEBXJlZkJ5CQCdCAIFDmFjcmVzMkNvbnRyYWN0BQhyZWZCeUtleQQEcmVmcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ5hY3JlczJDb250cmFjdAkBE2tleUFkZHJlc3NSZWZlcnJhbHMBBQ51c2VyQWRkcmVzc09wdAIABAhsYXN0VHhJZAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ5hY3JlczJDb250cmFjdAkBEWtleUxhc3RUeElkQnlVc2VyAQUOdXNlckFkZHJlc3NPcHQCAAQMYWNyZXNCYWxhbmNlAwkBCWlzRGVmaW5lZAEFBGFkZHIJAPAHAgkBBXZhbHVlAQUEYWRkcgUMYWNyZXNBc3NldElkAAAEC3N0YWtlZEFjcmVzCQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0CQEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBQ51c2VyQWRkcmVzc09wdAAABANsdmwJAQ9nZXRMZXZlbEJ5QWNyZXMBBQxhY3Jlc0JhbGFuY2UJAMwIAgkArAICAhIlcyVzX19jdXN0b21OYW1lX18FCmN1c3RvbU5hbWUJAMwIAgkArAICAhIlcyVzX19yZWZlcnJlZEJ5X18JAQt2YWx1ZU9yRWxzZQIFBXJlZkJ5AgAJAMwIAgkArAICAhElcyVzX19yZWZlcnJhbHNfXwUEcmVmcwkAzAgCCQCsAgICECVzJXNfX2xhc3RUeElkX18FCGxhc3RUeElkCQDMCAIJAKwCAgIUJXMlZF9fd2F2ZXNCYWxhbmNlX18JAKQDAQgFB2JhbGFuY2UJYXZhaWxhYmxlCQDMCAIJAKwCAgIVJXMlZF9fd2xnb2xkQmFsYW5jZV9fCQCkAwEFDXdsZ29sZEJhbGFuY2UJAMwIAgkArAICAhQlcyVkX19hY3Jlc0JhbGFuY2VfXwkApAMBBQxhY3Jlc0JhbGFuY2UJAMwIAgkArAICAhMlcyVkX19zdGFrZWRBY3Jlc19fCQCkAwEFC3N0YWtlZEFjcmVzCQDMCAIJAKwCAgISJXMlZF9fY3VycmVudEx2bF9fCQCkAwEFA2x2bAUDbmlsAwFpAQ1jb25zdHJ1Y3RvclYxAQljb250cmFjdHMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQKAQpkZXNjcmlwdG9yAgNhY2MLaWdub3JlZEl0ZW0JAKwCAgUDYWNjAgIlcwQFZGVzY3IKAAIkbAUJY29udHJhY3RzCgACJHMJAJADAQUCJGwKAAUkYWNjMAIACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpkZXNjcmlwdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlSZXN0Q2ZnAAkAuQkCCQDMCAIFBWRlc2NyBQljb250cmFjdHMFA1NFUAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5UmVzdDJBZGRyZXNzAAkApQgBBQR0aGlzBQNuaWwBaQESd2FsbGV0SW5mb1JFQURPTkxZAQ51c2VyQWRkcmVzc09wdAkAlAoCBQNuaWwJAQ53YWxsZXRJbnRlcm5hbAEFDnVzZXJBZGRyZXNzT3B0AWkBFmNvbnZlcnNpb25JbmZvUkVBRE9OTFkBDnVzZXJBZGRyZXNzT3B0BA9vbGRBY3Jlc0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFE29sZEFjcmVzQ29udHJhY3RLZXkECyR0MDQwMzU0MTU3CQEMYXNUdXBsZTJJbnRzAQkA/AcEBQ9vbGRBY3Jlc0FkZHJlc3MCF3Vuc3Rha2VBbGxBY3Jlc1JFQURPTkxZCQDMCAIFDnVzZXJBZGRyZXNzT3B0BQNuaWwFA25pbAQNdW5zdGFrZWRBY3JlcwgFCyR0MDQwMzU0MTU3Al8xBAxjbGFpbWVkQWNyZXMIBQskdDA0MDM1NDE1NwJfMgQLJHQwNDE2MDQzMDkJAQxhc1R1cGxlNEludHMBCQD8BwQFDmFjcmVzMkNvbnRyYWN0AhR1bnN0YWtlTGFuZHNSRUFET05MWQkAzAgCBQ51c2VyQWRkcmVzc09wdAUDbmlsBQNuaWwED2FjcmVzRnJvbVBpZWNlcwgFCyR0MDQxNjA0MzA5Al8xBAxhY3Jlc0Zyb21SZXMIBQskdDA0MTYwNDMwOQJfMgQMYWNyZXNGcm9tTWF0CAULJHQwNDE2MDQzMDkCXzMEDWFjcmVzRnJvbVByb2QIBQskdDA0MTYwNDMwOQJfNAQRb2xkU3Rha2luZ0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFFW9sZFN0YWtpbmdDb250cmFjdFN0cgQLZHVja0Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgURb2xkU3Rha2luZ0FkZHJlc3MJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFDnVzZXJBZGRyZXNzT3B0AgAECyR0MDQ0ODc0NzA5AwkBAiE9AgULZHVja0Fzc2V0SWQCAAkBDGFzVHVwbGUzSW50cwEJAPwHBAURb2xkU3Rha2luZ0FkZHJlc3MCE3Vuc3Rha2VEdWNrUkVBRE9OTFkJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUOdXNlckFkZHJlc3NPcHQFA25pbAUDbmlsCQCVCgMAAAAAAAAEEGFjcmVzRnJvbUR1Y2tSZXMIBQskdDA0NDg3NDcwOQJfMQQQYWNyZXNGcm9tRHVja01hdAgFCyR0MDQ0ODc0NzA5Al8yBBFhY3Jlc0Zyb21EdWNrUHJvZAgFCyR0MDQ0ODc0NzA5Al8zCQCUCgIFA25pbAkAzAgCCQCsAgICFSVzJWRfX3Vuc3Rha2VkQWNyZXNfXwkApAMBBQ11bnN0YWtlZEFjcmVzCQDMCAIJAKwCAgIUJXMlZF9fY2xhaW1lZEFjcmVzX18JAKQDAQUMY2xhaW1lZEFjcmVzCQDMCAIJAKwCAgIXJXMlZF9fYWNyZXNGcm9tUGllY2VzX18JAKQDAQUPYWNyZXNGcm9tUGllY2VzCQDMCAIJAKwCAgIUJXMlZF9fYWNyZXNGcm9tUmVzX18JAKQDAQUMYWNyZXNGcm9tUmVzCQDMCAIJAKwCAgIUJXMlZF9fYWNyZXNGcm9tTWF0X18JAKQDAQUMYWNyZXNGcm9tTWF0CQDMCAIJAKwCAgIVJXMlZF9fYWNyZXNGcm9tUHJvZF9fCQCkAwEFDWFjcmVzRnJvbVByb2QJAMwIAgkArAICAhglcyVkX19hY3Jlc0Zyb21EdWNrUmVzX18JAKQDAQUQYWNyZXNGcm9tRHVja1JlcwkAzAgCCQCsAgICGCVzJWRfX2FjcmVzRnJvbUR1Y2tNYXRfXwkApAMBBRBhY3Jlc0Zyb21EdWNrTWF0CQDMCAIJAKwCAgIZJXMlZF9fYWNyZXNGcm9tRHVja1Byb2RfXwkApAMBBRFhY3Jlc0Zyb21EdWNrUHJvZAUDbmlsAMDW6yw=", "height": 3280713, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Cn4jbpdfoMf4rZ8MCxmeN4ym3gbS74XA2CTzkuFiuRWK Next: 6QoWLHuwmreHtGSqvVqffhK3ycJ1mAynKFhPt2eA5Yt Diff:
OldNewDifferences
1111 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
1212 else if ((base58'2T' == $match0))
1313 then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv"
14+ else throw("Unknown chain")
15+}
16+
17+let oldStakingContractStr = match chain {
18+ case _ =>
19+ if ((base58'2W' == $match0))
20+ then "3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1"
21+ else if ((base58'2T' == $match0))
22+ then "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm"
1423 else throw("Unknown chain")
1524 }
1625
4150
4251 let wlgContract = getContractAddressOrFail(rest2Cfg, IdxCfgWlgDapp)
4352
53+let oldAcresContractKey = "oldAcresContract"
54+
4455 func keyLastTxIdByUser (addr) = ("lastTxIdByUser_" + addr)
4556
4657
5263
5364 let acresAssetId = valueOrErrorMessage(getBinary(acres2Contract, acresAssetIdKey), "ACRES is not issued yet")
5465
66+func keyStakedDuckByOwner (ownerAddr) = ("stakedDuckByOwner_" + ownerAddr)
67+
68+
5569 func keyAddressToCustomName (addr) = ("accountCustomNameByAddr_" + addr)
5670
5771
5973
6074
6175 func keyAddressReferrals (addr) = ("accReferrals_" + addr)
76+
77+
78+func asTuple4Ints (val) = match val {
79+ case t: (Int, Int, Int, Int) =>
80+ t
81+ case _ =>
82+ throw("fail to cast into (Int, Int, Int, Int)")
83+}
84+
85+
86+func asTuple3Ints (val) = match val {
87+ case t: (Int, Int, Int) =>
88+ t
89+ case _ =>
90+ throw("fail to cast into (Int, Int, Int)")
91+}
92+
93+
94+func asTuple2Ints (val) = match val {
95+ case t: (Int, Int) =>
96+ t
97+ case _ =>
98+ throw("fail to cast into (Int, Int)")
99+}
62100
63101
64102 let M8_ = 100000000
143181 func walletInfoREADONLY (userAddressOpt) = $Tuple2(nil, walletInternal(userAddressOpt))
144182
145183
184+
185+@Callable(i)
186+func conversionInfoREADONLY (userAddressOpt) = {
187+ let oldAcresAddress = addressFromStringValue(getStringValue(oldAcresContractKey))
188+ let $t040354157 = asTuple2Ints(invoke(oldAcresAddress, "unstakeAllAcresREADONLY", [userAddressOpt], nil))
189+ let unstakedAcres = $t040354157._1
190+ let claimedAcres = $t040354157._2
191+ let $t041604309 = asTuple4Ints(invoke(acres2Contract, "unstakeLandsREADONLY", [userAddressOpt], nil))
192+ let acresFromPieces = $t041604309._1
193+ let acresFromRes = $t041604309._2
194+ let acresFromMat = $t041604309._3
195+ let acresFromProd = $t041604309._4
196+ let oldStakingAddress = addressFromStringValue(oldStakingContractStr)
197+ let duckAssetId = valueOrElse(getString(oldStakingAddress, keyStakedDuckByOwner(userAddressOpt)), "")
198+ let $t044874709 = if ((duckAssetId != ""))
199+ then asTuple3Ints(invoke(oldStakingAddress, "unstakeDuckREADONLY", [duckAssetId, userAddressOpt], nil))
200+ else $Tuple3(0, 0, 0)
201+ let acresFromDuckRes = $t044874709._1
202+ let acresFromDuckMat = $t044874709._2
203+ let acresFromDuckProd = $t044874709._3
204+ $Tuple2(nil, [("%s%d__unstakedAcres__" + toString(unstakedAcres)), ("%s%d__claimedAcres__" + toString(claimedAcres)), ("%s%d__acresFromPieces__" + toString(acresFromPieces)), ("%s%d__acresFromRes__" + toString(acresFromRes)), ("%s%d__acresFromMat__" + toString(acresFromMat)), ("%s%d__acresFromProd__" + toString(acresFromProd)), ("%s%d__acresFromDuckRes__" + toString(acresFromDuckRes)), ("%s%d__acresFromDuckMat__" + toString(acresFromDuckMat)), ("%s%d__acresFromDuckProd__" + toString(acresFromDuckProd))])
205+ }
206+
207+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let chain = take(drop(this.bytes, 1), 1)
77
88 let defaultRest2AddressStr = match chain {
99 case _ =>
1010 if ((base58'2W' == $match0))
1111 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
1212 else if ((base58'2T' == $match0))
1313 then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv"
14+ else throw("Unknown chain")
15+}
16+
17+let oldStakingContractStr = match chain {
18+ case _ =>
19+ if ((base58'2W' == $match0))
20+ then "3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1"
21+ else if ((base58'2T' == $match0))
22+ then "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm"
1423 else throw("Unknown chain")
1524 }
1625
1726 func getStringOrFail (address,key) = valueOrErrorMessage(getString(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
1827
1928
2029 let IdxCfgAcres2Dapp = 1
2130
2231 let IdxCfgWlgDapp = 2
2332
2433 func keyRestCfg () = "%s__restConfig"
2534
2635
2736 func keyRest2Address () = "%s__rest2Addr"
2837
2938
3039 func readRestCfgOrFail (rest) = split_4C(getStringOrFail(rest, keyRestCfg()), SEP)
3140
3241
3342 func getContractAddressOrFail (rest2Cfg,idx) = valueOrErrorMessage(addressFromString(rest2Cfg[idx]), ("Rest cfg doesn't contain address at index " + toString(idx)))
3443
3544
3645 let rest2Contract = addressFromStringValue(valueOrElse(getString(this, keyRest2Address()), defaultRest2AddressStr))
3746
3847 let rest2Cfg = readRestCfgOrFail(rest2Contract)
3948
4049 let acres2Contract = getContractAddressOrFail(rest2Cfg, IdxCfgAcres2Dapp)
4150
4251 let wlgContract = getContractAddressOrFail(rest2Cfg, IdxCfgWlgDapp)
4352
53+let oldAcresContractKey = "oldAcresContract"
54+
4455 func keyLastTxIdByUser (addr) = ("lastTxIdByUser_" + addr)
4556
4657
4758 let wlgAssetIdKey = "wlg_assetId"
4859
4960 let wlgAssetId = valueOrErrorMessage(getBinary(wlgContract, wlgAssetIdKey), "WLGOLD is not issued yet")
5061
5162 let acresAssetIdKey = "acresAssetId"
5263
5364 let acresAssetId = valueOrErrorMessage(getBinary(acres2Contract, acresAssetIdKey), "ACRES is not issued yet")
5465
66+func keyStakedDuckByOwner (ownerAddr) = ("stakedDuckByOwner_" + ownerAddr)
67+
68+
5569 func keyAddressToCustomName (addr) = ("accountCustomNameByAddr_" + addr)
5670
5771
5872 func keyAddressRefBy (addr) = ("accRefBy_" + addr)
5973
6074
6175 func keyAddressReferrals (addr) = ("accReferrals_" + addr)
76+
77+
78+func asTuple4Ints (val) = match val {
79+ case t: (Int, Int, Int, Int) =>
80+ t
81+ case _ =>
82+ throw("fail to cast into (Int, Int, Int, Int)")
83+}
84+
85+
86+func asTuple3Ints (val) = match val {
87+ case t: (Int, Int, Int) =>
88+ t
89+ case _ =>
90+ throw("fail to cast into (Int, Int, Int)")
91+}
92+
93+
94+func asTuple2Ints (val) = match val {
95+ case t: (Int, Int) =>
96+ t
97+ case _ =>
98+ throw("fail to cast into (Int, Int)")
99+}
62100
63101
64102 let M8_ = 100000000
65103
66104 func keyAcresStakedAmtByUser (addr) = ("acresStakedAmountByUser_" + addr)
67105
68106
69107 let levels = [10, 20, 40, 80, 150, 250, 400, 700, 1000]
70108
71109 func getLevelByAcres (acres) = {
72110 let acr = (acres / M8_)
73111 func checker (acc,item) = if ((item > acr))
74112 then acc
75113 else (acc + 1)
76114
77115 let idx = {
78116 let $l = levels
79117 let $s = size($l)
80118 let $acc0 = 0
81119 func $f0_1 ($a,$i) = if (($i >= $s))
82120 then $a
83121 else checker($a, $l[$i])
84122
85123 func $f0_2 ($a,$i) = if (($i >= $s))
86124 then $a
87125 else throw("List size exceeds 10")
88126
89127 $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)
90128 }
91129 (idx + 1)
92130 }
93131
94132
95133 func walletInternal (userAddressOpt) = {
96134 let addr = addressFromString(userAddressOpt)
97135 let balance = if (isDefined(addr))
98136 then wavesBalance(value(addr))
99137 else BalanceDetails(0, 0, 0, 0)
100138 let wlgoldBalance = if (isDefined(addr))
101139 then assetBalance(value(addr), wlgAssetId)
102140 else 0
103141 let customName = valueOrElse(getString(acres2Contract, keyAddressToCustomName(userAddressOpt)), userAddressOpt)
104142 let refByKey = keyAddressRefBy(userAddressOpt)
105143 let refBy = getString(acres2Contract, refByKey)
106144 let refs = valueOrElse(getString(acres2Contract, keyAddressReferrals(userAddressOpt)), "")
107145 let lastTxId = valueOrElse(getString(acres2Contract, keyLastTxIdByUser(userAddressOpt)), "")
108146 let acresBalance = if (isDefined(addr))
109147 then assetBalance(value(addr), acresAssetId)
110148 else 0
111149 let stakedAcres = valueOrElse(getInteger(acres2Contract, keyAcresStakedAmtByUser(userAddressOpt)), 0)
112150 let lvl = getLevelByAcres(acresBalance)
113151 [("%s%s__customName__" + customName), ("%s%s__referredBy__" + valueOrElse(refBy, "")), ("%s%s__referrals__" + refs), ("%s%s__lastTxId__" + lastTxId), ("%s%d__wavesBalance__" + toString(balance.available)), ("%s%d__wlgoldBalance__" + toString(wlgoldBalance)), ("%s%d__acresBalance__" + toString(acresBalance)), ("%s%d__stakedAcres__" + toString(stakedAcres)), ("%s%d__currentLvl__" + toString(lvl))]
114152 }
115153
116154
117155 @Callable(i)
118156 func constructorV1 (contracts) = if ((i.caller != this))
119157 then throw("permissions denied")
120158 else {
121159 func descriptor (acc,ignoredItem) = (acc + "%s")
122160
123161 let descr = {
124162 let $l = contracts
125163 let $s = size($l)
126164 let $acc0 = ""
127165 func $f0_1 ($a,$i) = if (($i >= $s))
128166 then $a
129167 else descriptor($a, $l[$i])
130168
131169 func $f0_2 ($a,$i) = if (($i >= $s))
132170 then $a
133171 else throw("List size exceeds 10")
134172
135173 $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)
136174 }
137175 [StringEntry(keyRestCfg(), makeString(descr :: contracts, SEP)), StringEntry(keyRest2Address(), toString(this))]
138176 }
139177
140178
141179
142180 @Callable(i)
143181 func walletInfoREADONLY (userAddressOpt) = $Tuple2(nil, walletInternal(userAddressOpt))
144182
145183
184+
185+@Callable(i)
186+func conversionInfoREADONLY (userAddressOpt) = {
187+ let oldAcresAddress = addressFromStringValue(getStringValue(oldAcresContractKey))
188+ let $t040354157 = asTuple2Ints(invoke(oldAcresAddress, "unstakeAllAcresREADONLY", [userAddressOpt], nil))
189+ let unstakedAcres = $t040354157._1
190+ let claimedAcres = $t040354157._2
191+ let $t041604309 = asTuple4Ints(invoke(acres2Contract, "unstakeLandsREADONLY", [userAddressOpt], nil))
192+ let acresFromPieces = $t041604309._1
193+ let acresFromRes = $t041604309._2
194+ let acresFromMat = $t041604309._3
195+ let acresFromProd = $t041604309._4
196+ let oldStakingAddress = addressFromStringValue(oldStakingContractStr)
197+ let duckAssetId = valueOrElse(getString(oldStakingAddress, keyStakedDuckByOwner(userAddressOpt)), "")
198+ let $t044874709 = if ((duckAssetId != ""))
199+ then asTuple3Ints(invoke(oldStakingAddress, "unstakeDuckREADONLY", [duckAssetId, userAddressOpt], nil))
200+ else $Tuple3(0, 0, 0)
201+ let acresFromDuckRes = $t044874709._1
202+ let acresFromDuckMat = $t044874709._2
203+ let acresFromDuckProd = $t044874709._3
204+ $Tuple2(nil, [("%s%d__unstakedAcres__" + toString(unstakedAcres)), ("%s%d__claimedAcres__" + toString(claimedAcres)), ("%s%d__acresFromPieces__" + toString(acresFromPieces)), ("%s%d__acresFromRes__" + toString(acresFromRes)), ("%s%d__acresFromMat__" + toString(acresFromMat)), ("%s%d__acresFromProd__" + toString(acresFromProd)), ("%s%d__acresFromDuckRes__" + toString(acresFromDuckRes)), ("%s%d__acresFromDuckMat__" + toString(acresFromDuckMat)), ("%s%d__acresFromDuckProd__" + toString(acresFromDuckProd))])
205+ }
206+
207+

github/deemru/w8io/169f3d6 
27.95 ms