tx · D9JCZa9688jSnJ3MbX4RtyxVosEUbCNEa2eCqQqTM4R9 3N8Cko4wa6ewdnPRXybzTMDpnhuYREfkps7: -0.00200000 Waves 2023.09.07 19:14 [2745197] smart account 3N8Cko4wa6ewdnPRXybzTMDpnhuYREfkps7 > SELF 0.00000000 Waves
{ "type": 13, "id": "D9JCZa9688jSnJ3MbX4RtyxVosEUbCNEa2eCqQqTM4R9", "fee": 200000, "feeAssetId": null, "timestamp": 1694103330822, "version": 2, "chainId": 84, "sender": "3N8Cko4wa6ewdnPRXybzTMDpnhuYREfkps7", "senderPublicKey": "4oVxBvsmoAhMaT1WhgSLcKFKX1NzwYxDaR89cAdGRGky", "proofs": [ "9n8aKfWivk1CyG1RK9hd42etzceHnBSz99DnbwoFkdX3gX5cL9jvy6wPSd4GHT2g49BmNMpuzkSz1Wi4RfirAkK" ], "script": "base64:BgIOCAISABIECgIIARIAEgAGAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQALdXNkdEFzc2V0SWQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDABIITaerIIAz9O0bvKju6Lk7zJgt0LXfoHlqjUI/moD/+5AwkAAAIBAVQFByRtYXRjaDABIFWx2J9yh4Lv5eNbjawFq2XemkOhLxa7BfMat4el8cUYCQACAQINVW5rbm93biBjaGFpbgEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQAD3piaWxsQXNzZXRJZEtleQINemJpbGxfYXNzZXRJZAAMemJpbGxBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgUEdGhpcwUPemJpbGxBc3NldElkS2V5AhNOb3QgaW5pdGlhbGl6ZWQgeWV0ABR6YmlsbElzc3VlZEFtb3VudEtleQISemJpbGxfaXNzdWVkQW1vdW50BAFpAQ1jb25zdHJ1Y3RvclYxAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkAwkBCWlzRGVmaW5lZAEJAKEIAQUPemJpbGxBc3NldElkS2V5CQACAQITQWxyZWFkeSBpbml0aWFsaXplZAQMaXNzdWVkQW1vdW50AAAEBWlzc3VlCQDDCAcCBVpCSUxMAhtVU0RUIEJpbGwgb2YgRXhjaGFuZ2UgdG9rZW4FDGlzc3VlZEFtb3VudAAGBgUEdW5pdAAABAdhc3NldElkCQC4CAEFBWlzc3VlCQDMCAIFBWlzc3VlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRR6YmlsbElzc3VlZEFtb3VudEtleQUMaXNzdWVkQW1vdW50CQDMCAIJAQtCaW5hcnlFbnRyeQIFD3piaWxsQXNzZXRJZEtleQUHYXNzZXRJZAUDbmlsAWkBCHRha2VVc2R0AghkZXN0QWRkcgZhbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECE05vIHBheW1lbnRzIGFsbG93ZWQEDGlzc3VlZEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTUpAQUUemJpbGxJc3N1ZWRBbW91bnRLZXkJAMwIAgkBB1JlaXNzdWUDBQx6YmlsbEFzc2V0SWQFBmFtb3VudAYJAMwIAgkBDEludGVnZXJFbnRyeQIFFHpiaWxsSXNzdWVkQW1vdW50S2V5CQBkAgUMaXNzdWVkQW1vdW50BQZhbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUIZGVzdEFkZHIFBmFtb3VudAULdXNkdEFzc2V0SWQFA25pbAFpAQpyZXR1cm5Vc2R0AAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQNwbXQHYXNzZXRJZAITVVNEVCBwYXltZW50cyBvbmx5IQMJAQIhPQIFCnBtdEFzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQQMaXNzdWVkQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1NSkBBRR6YmlsbElzc3VlZEFtb3VudEtleQMJAGYCBQNhbXQFDGlzc3VlZEFtb3VudAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIYQ2FuJ3QgcmV0dXJuIG1vcmUgVVNEVCAoCQEKZml4ZWRQb2ludAIFA2FtdAAGAhYpLCB0aGFuIGlzc3VlZCBaQklMTCAoCQEKZml4ZWRQb2ludAIFDGlzc3VlZEFtb3VudAAGAgEpCQDMCAIJAQRCdXJuAgUMemJpbGxBc3NldElkBQNhbXQJAMwIAgkBDEludGVnZXJFbnRyeQIFFHpiaWxsSXNzdWVkQW1vdW50S2V5CQBlAgUMaXNzdWVkQW1vdW50BQNhbXQFA25pbAFpARBnZXRGdW5kc1JFQURPTkxZAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECE05vIHBheW1lbnRzIGFsbG93ZWQEB2Z1bmRTdW0JAGQCCQDwBwIFBHRoaXMFC3VzZHRBc3NldElkCQDwBwIFBHRoaXMFDHpiaWxsQXNzZXRJZAkAlAoCBQNuaWwFB2Z1bmRTdW0AmTQtRQ==", "height": 2745197, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2Zosr4mf9foi5ALcpihRsezUo3HA3UoLnXTUza24TBWd Next: 9Mjqvv6ZevHtMMZgYVU3ihjyTR2SoKz9wKjcdQuMeTU4 Full:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let chain = take(drop(this.bytes, 1), 1) | |
5 | 5 | ||
6 | 6 | let usdtAssetId = match chain { | |
7 | 7 | case _ => | |
8 | 8 | if ((base58'2W' == $match0)) | |
9 | 9 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
10 | 10 | else if ((base58'2T' == $match0)) | |
11 | 11 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
12 | 12 | else throw("Unknown chain") | |
13 | 13 | } | |
14 | 14 | ||
15 | 15 | func fixedPoint (val,decimals) = { | |
16 | 16 | let tenPow = pow(10, 0, decimals, 0, 0, DOWN) | |
17 | 17 | let lowPart = toString((val % tenPow)) | |
18 | 18 | let zeroes = drop(toString(tenPow), (1 + size(lowPart))) | |
19 | 19 | (((toString((val / tenPow)) + ".") + zeroes) + lowPart) | |
20 | 20 | } | |
21 | 21 | ||
22 | 22 | ||
23 | 23 | let zbillAssetIdKey = "zbill_assetId" | |
24 | 24 | ||
25 | 25 | let zbillAssetId = valueOrErrorMessage(getBinary(this, zbillAssetIdKey), "Not initialized yet") | |
26 | 26 | ||
27 | 27 | let zbillIssuedAmountKey = "zbill_issuedAmount" | |
28 | 28 | ||
29 | 29 | @Callable(i) | |
30 | 30 | func constructorV1 () = if ((i.caller != this)) | |
31 | 31 | then throw("Permission denied") | |
32 | 32 | else if (isDefined(getBinary(zbillAssetIdKey))) | |
33 | 33 | then throw("Already initialized") | |
34 | 34 | else { | |
35 | 35 | let issuedAmount = 0 | |
36 | 36 | let issue = Issue("ZBILL", "USDT Bill of Exchange token", issuedAmount, 6, true, unit, 0) | |
37 | 37 | let assetId = calculateAssetId(issue) | |
38 | 38 | [issue, IntegerEntry(zbillIssuedAmountKey, issuedAmount), BinaryEntry(zbillAssetIdKey, assetId)] | |
39 | 39 | } | |
40 | 40 | ||
41 | 41 | ||
42 | 42 | ||
43 | 43 | @Callable(i) | |
44 | 44 | func takeUsdt (destAddr,amount) = if ((i.caller != this)) | |
45 | 45 | then throw("permission denied") | |
46 | 46 | else if ((size(i.payments) != 0)) | |
47 | 47 | then throw("No payments allowed") | |
48 | 48 | else { | |
49 | 49 | let issuedAmount = getIntegerValue(zbillIssuedAmountKey) | |
50 | 50 | [Reissue(zbillAssetId, amount, true), IntegerEntry(zbillIssuedAmountKey, (issuedAmount + amount)), ScriptTransfer(addressFromStringValue(destAddr), amount, usdtAssetId)] | |
51 | 51 | } | |
52 | 52 | ||
53 | 53 | ||
54 | 54 | ||
55 | 55 | @Callable(i) | |
56 | 56 | func returnUsdt () = if ((size(i.payments) != 1)) | |
57 | 57 | then throw("exactly 1 payment must be attached") | |
58 | 58 | else { | |
59 | 59 | let pmt = i.payments[0] | |
60 | 60 | let amt = pmt.amount | |
61 | 61 | let pmtAssetId = valueOrErrorMessage(pmt.assetId, "USDT payments only!") | |
62 | 62 | if ((pmtAssetId != usdtAssetId)) | |
63 | 63 | then throw("USDT payments only!") | |
64 | 64 | else { | |
65 | 65 | let issuedAmount = getIntegerValue(zbillIssuedAmountKey) | |
66 | 66 | if ((amt > issuedAmount)) | |
67 | 67 | then throw((((("Can't return more USDT (" + fixedPoint(amt, 6)) + "), than issued ZBILL (") + fixedPoint(issuedAmount, 6)) + ")")) | |
68 | 68 | else [Burn(zbillAssetId, amt), IntegerEntry(zbillIssuedAmountKey, (issuedAmount - amt))] | |
69 | 69 | } | |
70 | 70 | } | |
71 | 71 | ||
72 | 72 | ||
73 | 73 | ||
74 | 74 | @Callable(i) | |
75 | 75 | func getFundsREADONLY () = if ((size(i.payments) != 0)) | |
76 | 76 | then throw("No payments allowed") | |
77 | 77 | else { | |
78 | 78 | let fundSum = (assetBalance(this, usdtAssetId) + assetBalance(this, zbillAssetId)) | |
79 | 79 | $Tuple2(nil, fundSum) | |
80 | 80 | } | |
81 | 81 | ||
82 | 82 |
github/deemru/w8io/169f3d6 29.51 ms ◑