tx · 7F4q2mgA9gK3jQBjM29vZYdfxroK5UtHoAPKs2TMtnUA 3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr: -0.01000000 Waves 2023.07.14 17:59 [3731347] smart account 3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr > SELF 0.00000000 Waves
{ "type": 13, "id": "7F4q2mgA9gK3jQBjM29vZYdfxroK5UtHoAPKs2TMtnUA", "fee": 1000000, "feeAssetId": null, "timestamp": 1689346854490, "version": 2, "chainId": 87, "sender": "3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr", "senderPublicKey": "A5AvSRrbVauQKBhPtuWTLTQdE5ka4nVCSDaVANpFur26", "proofs": [ "bx6BZDyrH91jYxs8Go28HkGFcwZcb5k2ipP2GnUmsKvHRdyrTWHF14rHAKHhrnQx4KkMHno7UREBc64vxnn6Gsg" ], "script": "base64:BgIKCAISABIAEgASAAwAAmQ4AIDC1y8ABnBvb2xJZAEaAVf1RmgngA1o304mdXq0odMoMeAJv/V5eTcACnBvb2xTdHJpbmcJANgEAQUGcG9vbElkAApvcGVyYXRpb25zARoBV2n+SaaIkBd5AP0uMuAzytUpkKjXIkNH7QAJd2hpcmxwb29sASBZ443cwrUjukoU3MTQrxQJ5mTmBL4lBgsmTuVQbZdZxwAFd2F2ZXMBBBOr2TMAC3dhdmVzaW5wb29sCQERQGV4dHJOYXRpdmUoMTA1MCkCCQEHQWRkcmVzcwEFBnBvb2xJZAkArAICCQCsAgICB2dsb2JhbF8JANgEAQUFd2F2ZXMCCF9iYWxhbmNlAAxwcm9qZWN0c3Rha2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIJAQdBZGRyZXNzAQUGcG9vbElkCQCsAgICIzNQQWttSm5pTWdubkFlajVwWWYyakZZa0NiWm93NXB0OXRyAgxfaW5kZXhTdGFrZWQACnRvdGFsc3Rha2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIJAQdBZGRyZXNzAQUGcG9vbElkAhdnbG9iYWxfcG9vbFRva2VuX2Ftb3VudAAKdHZsaW53YXZlcwkAawMJAGgCBQt3YXZlc2lucG9vbAAKBQxwcm9qZWN0c3Rha2UFCnRvdGFsc3Rha2UAD3doaXJscG9vbHN1cHBseQQHJG1hdGNoMAkA7AcBBQl3aGlybHBvb2wDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIcXVhbnRpdHkJAAIBAhBDYW4ndCBmaW5kIGFzc2V0AAVwcmljZQMJAGcCCQBkAgkAawMJAGQCBQp0dmxpbndhdmVzCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzBQJkOAUPd2hpcmxwb29sc3VwcGx5BQJkOAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIhV0hJUkxQT09MIGlzc3VlIHByaWNlIGluIHdhdmVsZXRzCQBkAgkAawMJAGQCBQp0dmxpbndhdmVzCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzBQJkOAUPd2hpcmxwb29sc3VwcGx5BQJkOAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIhV0hJUkxQT09MIGlzc3VlIHByaWNlIGluIHdhdmVsZXRzBAFpARVidXlXSElSTFBPT0x3aXRoV0FWRVMABANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHc3VycGx1cwkAawMJAGUCBQVwcmljZQUCZDgIBQNwbXQGYW1vdW50BQJkOAQMdG9PcGVyYXRpb25zCQBrAwkAZQIIBQNwbXQGYW1vdW50BQdzdXJwbHVzCQBrAwAZBQJkOAAJCQBoAgBkBQJkOAQMc3VwcGx5YW1vdW50CQBpAgkAZQIJAGUCCAUDcG10BmFtb3VudAUMdG9PcGVyYXRpb25zBQdzdXJwbHVzAAQEBmFtb3VudAkAawMIBQNwbXQGYW1vdW50BQJkOAUFcHJpY2UDCQECIT0CCAUDcG10B2Fzc2V0SWQFBHVuaXQJAAIBAhdhdHRhY2ggV0FWRVMgdG9rZW4gb25seQQTU3VwcGx5V2F2ZXNNYWluUG9vbAkA/AcECQEHQWRkcmVzcwEBGgFXIJRcSq3P9Eg5O4hAs7/b7oxQoKdqz9roAgZzdXBwbHkFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUMc3VwcGx5YW1vdW50BQNuaWwDCQAAAgUTU3VwcGx5V2F2ZXNNYWluUG9vbAUTU3VwcGx5V2F2ZXNNYWluUG9vbAQYU3VwcGx5V2F2ZXNXYXZlc0RlZmlQb29sCQD8BwQJAQdBZGRyZXNzAQEaAVcZCzuPP83F9QBSQ7jrpozIrL8UOTE+JL4CBnN1cHBseQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQxzdXBwbHlhbW91bnQFA25pbAMJAAACBRhTdXBwbHlXYXZlc1dhdmVzRGVmaVBvb2wFGFN1cHBseVdhdmVzV2F2ZXNEZWZpUG9vbAQTU3VwcGx5V2F2ZXNOZXdXYXZlcwkA/AcECQEHQWRkcmVzcwEBGgFXrmAU0mZwDPA/3HTF0nTmGr6p4FLB6guQAgZzdXBwbHkFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUMc3VwcGx5YW1vdW50BQNuaWwDCQAAAgUTU3VwcGx5V2F2ZXNOZXdXYXZlcwUTU3VwcGx5V2F2ZXNOZXdXYXZlcwQSU3VwcGx5V2F2ZXNWaXJlc1YyCQD8BwQJAQdBZGRyZXNzAQEaAVdVGw6be8HzjlJwwYt+dc4KpxC5C8V0AvUCB2RlcG9zaXQJAMwIAgIjM1BNWWFkeTdLelVOblJyRkd6TUJucTdha01EV2lDUXlvUXoJAMwIAgYFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUMc3VwcGx5YW1vdW50BQNuaWwDCQAAAgUSU3VwcGx5V2F2ZXNWaXJlc1YyBRJTdXBwbHlXYXZlc1ZpcmVzVjIJAMwIAgkBB1JlaXNzdWUDBQl3aGlybHBvb2wJAGQCBQZhbW91bnQJAGkCBQZhbW91bnQABAYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZhbW91bnQFCXdoaXJscG9vbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFCm9wZXJhdGlvbnMJAGkCBQZhbW91bnQABAUJd2hpcmxwb29sCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUKb3BlcmF0aW9ucwUMdG9PcGVyYXRpb25zBQR1bml0CQDMCAIJAQxJbnRlZ2VyRW50cnkCAiFXSElSTFBPT0wgaXNzdWUgcHJpY2UgaW4gd2F2ZWxldHMFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAiJzdXJwbHVzIHRyZWFzdXJ5IHZhbHVlIGluIHdhdmVsZXRzBQp0dmxpbndhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhZXSElSTFBPT0wgdG90YWwgc3VwcGx5BQ93aGlybHBvb2xzdXBwbHkJAMwIAgkBDEludGVnZXJFbnRyeQICHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMJAGQCBQdzdXJwbHVzCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESUHJpY2VTdXJwbHVzU3VwcGx5AAkAzAgCCQEMSW50ZWdlckVudHJ5AgINV0FWRVMgaW4gcG9vbAULd2F2ZXNpbnBvb2wJAMwIAgkBDEludGVnZXJFbnRyeQICDHByb2plY3RzdGFrZQUMcHJvamVjdHN0YWtlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgp0b3RhbHN0YWtlBQp0b3RhbHN0YWtlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAiFXSElSTFBPT0wgaXNzdWUgcHJpY2UgaW4gd2F2ZWxldHMFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAiJzdXJwbHVzIHRyZWFzdXJ5IHZhbHVlIGluIHdhdmVsZXRzBQp0dmxpbndhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhZXSElSTFBPT0wgdG90YWwgc3VwcGx5BQ93aGlybHBvb2xzdXBwbHkJAMwIAgkBDEludGVnZXJFbnRyeQICHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMFA25pbAFpAQZkRW50cnkAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgkAzAgCCQEMSW50ZWdlckVudHJ5AgIhV0hJUkxQT09MIGlzc3VlIHByaWNlIGluIHdhdmVsZXRzCQBoAgABBQJkOAkAzAgCCQEMSW50ZWdlckVudHJ5AgIic3VycGx1cyB0cmVhc3VyeSB2YWx1ZSBpbiB3YXZlbGV0cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCAhZXSElSTFBPT0wgdG90YWwgc3VwcGx5BQ93aGlybHBvb2xzdXBwbHkJAMwIAgkBDEludGVnZXJFbnRyeQICHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMAAAUDbmlsAWkBE1Bvb2xPbmVUb2tlblN1cnBsdXMAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQNc3VycGx1c2Ftb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwQTUG9vbE9uZVRva2VuU3VycGx1cwkA/AcECQEHQWRkcmVzcwEBGgFX/SXDvU5hlEHvul4SY4/FOW9JtYg69eltAiFnZW5lcmF0ZUluZGV4V2l0aE9uZVRva2VuQW5kU3Rha2UJAMwIAgUKcG9vbFN0cmluZwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQ1zdXJwbHVzYW1vdW50BQNuaWwDCQAAAgUTUG9vbE9uZVRva2VuU3VycGx1cwUTUG9vbE9uZVRva2VuU3VycGx1cwkAzAgCCQEMSW50ZWdlckVudHJ5AgIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwkAZQIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMFDXN1cnBsdXNhbW91bnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAOorlT", "height": 3731347, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 74msFsH4PsFs3XYS3Cg548f3bTbAkKYmhtuH2ZDCZKwb Next: 9FdLX9QKguTGYescu9nDi56QCVQxXyrGGYnZCihv38tC Diff:
Old | New | Differences | |
---|---|---|---|
36 | 36 | func buyWHIRLPOOLwithWAVES () = { | |
37 | 37 | let pmt = value(i.payments[0]) | |
38 | 38 | let surplus = fraction((price - d8), pmt.amount, d8) | |
39 | - | let toOperations = fraction(pmt.amount, fraction(25, d8, 9), (100 * d8)) | |
39 | + | let toOperations = fraction((pmt.amount - surplus), fraction(25, d8, 9), (100 * d8)) | |
40 | 40 | let supplyamount = (((pmt.amount - toOperations) - surplus) / 4) | |
41 | 41 | let amount = fraction(pmt.amount, d8, price) | |
42 | 42 | if ((pmt.assetId != unit)) | |
83 | 83 | then throw("access only by project owner") | |
84 | 84 | else { | |
85 | 85 | let surplusamount = getIntegerValue(this, "surplus received in wavelets") | |
86 | - | let PoolOneTokenSurplus = invoke(Address( | |
86 | + | let PoolOneTokenSurplus = invoke(Address(base58'3PR1Qvi9mHT35SwWEkLSqqE2L8thiPLdVWU'), "generateIndexWithOneTokenAndStake", [poolString], [AttachedPayment(unit, surplusamount)]) | |
87 | 87 | if ((PoolOneTokenSurplus == PoolOneTokenSurplus)) | |
88 | 88 | then [IntegerEntry("surplus received in wavelets", (getIntegerValue(this, "surplus received in wavelets") - surplusamount))] | |
89 | 89 | else throw("Strict value is not equal to itself.") |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let d8 = 100000000 | |
5 | 5 | ||
6 | 6 | let poolId = base58'3PQHndCUVrv3wBuQjbvVP9SnGmfbfitGxfx' | |
7 | 7 | ||
8 | 8 | let poolString = toBase58String(poolId) | |
9 | 9 | ||
10 | 10 | let operations = base58'3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e' | |
11 | 11 | ||
12 | 12 | let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi' | |
13 | 13 | ||
14 | 14 | let waves = base58'WAVES' | |
15 | 15 | ||
16 | 16 | let wavesinpool = getIntegerValue(Address(poolId), (("global_" + toBase58String(waves)) + "_balance")) | |
17 | 17 | ||
18 | 18 | let projectstake = getIntegerValue(Address(poolId), ("3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr" + "_indexStaked")) | |
19 | 19 | ||
20 | 20 | let totalstake = getIntegerValue(Address(poolId), "global_poolToken_amount") | |
21 | 21 | ||
22 | 22 | let tvlinwaves = fraction((wavesinpool * 10), projectstake, totalstake) | |
23 | 23 | ||
24 | 24 | let whirlpoolsupply = match assetInfo(whirlpool) { | |
25 | 25 | case asset: Asset => | |
26 | 26 | asset.quantity | |
27 | 27 | case _ => | |
28 | 28 | throw("Can't find asset") | |
29 | 29 | } | |
30 | 30 | ||
31 | 31 | let price = if (((fraction((tvlinwaves + getIntegerValue(this, "surplus received in wavelets")), d8, whirlpoolsupply) + d8) >= getIntegerValue(this, "WHIRLPOOL issue price in wavelets"))) | |
32 | 32 | then (fraction((tvlinwaves + getIntegerValue(this, "surplus received in wavelets")), d8, whirlpoolsupply) + d8) | |
33 | 33 | else getIntegerValue(this, "WHIRLPOOL issue price in wavelets") | |
34 | 34 | ||
35 | 35 | @Callable(i) | |
36 | 36 | func buyWHIRLPOOLwithWAVES () = { | |
37 | 37 | let pmt = value(i.payments[0]) | |
38 | 38 | let surplus = fraction((price - d8), pmt.amount, d8) | |
39 | - | let toOperations = fraction(pmt.amount, fraction(25, d8, 9), (100 * d8)) | |
39 | + | let toOperations = fraction((pmt.amount - surplus), fraction(25, d8, 9), (100 * d8)) | |
40 | 40 | let supplyamount = (((pmt.amount - toOperations) - surplus) / 4) | |
41 | 41 | let amount = fraction(pmt.amount, d8, price) | |
42 | 42 | if ((pmt.assetId != unit)) | |
43 | 43 | then throw("attach WAVES token only") | |
44 | 44 | else { | |
45 | 45 | let SupplyWavesMainPool = invoke(Address(base58'3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
46 | 46 | if ((SupplyWavesMainPool == SupplyWavesMainPool)) | |
47 | 47 | then { | |
48 | 48 | let SupplyWavesWavesDefiPool = invoke(Address(base58'3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
49 | 49 | if ((SupplyWavesWavesDefiPool == SupplyWavesWavesDefiPool)) | |
50 | 50 | then { | |
51 | 51 | let SupplyWavesNewWaves = invoke(Address(base58'3PHpuQUPVUoR3AYzFeJzeWJfYLsLTmWssVH'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
52 | 52 | if ((SupplyWavesNewWaves == SupplyWavesNewWaves)) | |
53 | 53 | then { | |
54 | 54 | let SupplyWavesViresV2 = invoke(Address(base58'3P9gtaWVnxA2TgFkvFMQSHPyfyNssjLGx5A'), "deposit", ["3PMYady7KzUNnRrFGzMBnq7akMDWiCQyoQz", true], [AttachedPayment(unit, supplyamount)]) | |
55 | 55 | if ((SupplyWavesViresV2 == SupplyWavesViresV2)) | |
56 | 56 | then [Reissue(whirlpool, (amount + (amount / 4)), true), ScriptTransfer(i.caller, amount, whirlpool), ScriptTransfer(Address(operations), (amount / 4), whirlpool), ScriptTransfer(Address(operations), toOperations, unit), IntegerEntry("WHIRLPOOL issue price in wavelets", price), IntegerEntry("surplus treasury value in wavelets", tvlinwaves), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("surplus received in wavelets", (surplus + getIntegerValue(this, "surplus received in wavelets")))] | |
57 | 57 | else throw("Strict value is not equal to itself.") | |
58 | 58 | } | |
59 | 59 | else throw("Strict value is not equal to itself.") | |
60 | 60 | } | |
61 | 61 | else throw("Strict value is not equal to itself.") | |
62 | 62 | } | |
63 | 63 | else throw("Strict value is not equal to itself.") | |
64 | 64 | } | |
65 | 65 | } | |
66 | 66 | ||
67 | 67 | ||
68 | 68 | ||
69 | 69 | @Callable(i) | |
70 | 70 | func PriceSurplusSupply () = [IntegerEntry("WAVES in pool", wavesinpool), IntegerEntry("projectstake", projectstake), IntegerEntry("totalstake", totalstake), IntegerEntry("WHIRLPOOL issue price in wavelets", price), IntegerEntry("surplus treasury value in wavelets", tvlinwaves), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("surplus received in wavelets", getIntegerValue(this, "surplus received in wavelets"))] | |
71 | 71 | ||
72 | 72 | ||
73 | 73 | ||
74 | 74 | @Callable(i) | |
75 | 75 | func dEntry () = if ((i.caller != this)) | |
76 | 76 | then throw("access only by project owner") | |
77 | 77 | else [IntegerEntry("WHIRLPOOL issue price in wavelets", (1 * d8)), IntegerEntry("surplus treasury value in wavelets", 0), IntegerEntry("WHIRLPOOL total supply", whirlpoolsupply), IntegerEntry("surplus received in wavelets", 0)] | |
78 | 78 | ||
79 | 79 | ||
80 | 80 | ||
81 | 81 | @Callable(i) | |
82 | 82 | func PoolOneTokenSurplus () = if ((i.caller != this)) | |
83 | 83 | then throw("access only by project owner") | |
84 | 84 | else { | |
85 | 85 | let surplusamount = getIntegerValue(this, "surplus received in wavelets") | |
86 | - | let PoolOneTokenSurplus = invoke(Address( | |
86 | + | let PoolOneTokenSurplus = invoke(Address(base58'3PR1Qvi9mHT35SwWEkLSqqE2L8thiPLdVWU'), "generateIndexWithOneTokenAndStake", [poolString], [AttachedPayment(unit, surplusamount)]) | |
87 | 87 | if ((PoolOneTokenSurplus == PoolOneTokenSurplus)) | |
88 | 88 | then [IntegerEntry("surplus received in wavelets", (getIntegerValue(this, "surplus received in wavelets") - surplusamount))] | |
89 | 89 | else throw("Strict value is not equal to itself.") | |
90 | 90 | } | |
91 | 91 | ||
92 | 92 |
github/deemru/w8io/3ef1775 35.03 ms ◑