tx · B9V4JoCMeMySF57VFfzmrqa7S7KZP1hFgrUWTAPPKCKw 3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr: -0.01000000 Waves 2023.08.19 16:20 [3783226] smart account 3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr > SELF 0.00000000 Waves
{ "type": 13, "id": "B9V4JoCMeMySF57VFfzmrqa7S7KZP1hFgrUWTAPPKCKw", "fee": 1000000, "feeAssetId": null, "timestamp": 1692451244111, "version": 2, "chainId": 87, "sender": "3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr", "senderPublicKey": "A5AvSRrbVauQKBhPtuWTLTQdE5ka4nVCSDaVANpFur26", "proofs": [ "3AkDwoDyEnH82iPL4aHZkEMjSJ8eVUHGkfy4vzqnbWDr1MiZHhLCmGyDXBgb1FuCYNvzze2jAu1fWtGrLZtZPmGT" ], "script": "base64:BgIMCAISABIAEgASABIAEAACZDgAgMLXLwAGcG9vbElkARoBV/VGaCeADWjfTiZ1erSh0ygx4Am/9Xl5NwAKcG9vbFN0cmluZwkA2AQBBQZwb29sSWQACm9wZXJhdGlvbnMBGgFXaf5JpoiQF3kA/S4y4DPK1SmQqNciQ0ftAA93aGlybHBvb2xQb29sSWQBBQV0o/bXAAl3aGlybHBvb2wBIFnjjdzCtSO6ShTcxNCvFAnmZOYEviUGCyZO5VBtl1nHAAV3YXZlcwEEE6vZMwAGc3dhdmVzASAIH8j3FjDtUcIpG+ysGo/8kHEcWTgt6yGBsDdB8EXRSgAJYnVybnh0bklkASAkT3V5an4zObj7DP+EqXFcXsot3jOgxF1p+epEEexMVAALd2F2ZXNpbnBvb2wJARFAZXh0ck5hdGl2ZSgxMDUwKQIJAQdBZGRyZXNzAQUGcG9vbElkCQCsAgIJAKwCAgIHZ2xvYmFsXwkA2AQBBQV3YXZlcwIIX2JhbGFuY2UADHByb2plY3RzdGFrZQkBEUBleHRyTmF0aXZlKDEwNTApAgkBB0FkZHJlc3MBBQZwb29sSWQJAKwCAgIjM1BBa21KbmlNZ25uQWVqNXBZZjJqRllrQ2Jab3c1cHQ5dHICDF9pbmRleFN0YWtlZAAKdG90YWxzdGFrZQkBEUBleHRyTmF0aXZlKDEwNTApAgkBB0FkZHJlc3MBBQZwb29sSWQCF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50AAp0dmxpbndhdmVzCQBrAwkAaAIFC3dhdmVzaW5wb29sAAoFDHByb2plY3RzdGFrZQUKdG90YWxzdGFrZQAPd2hpcmxwb29sc3VwcGx5BAckbWF0Y2gwCQDsBwEFCXdoaXJscG9vbAMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhxdWFudGl0eQkAAgECEENhbid0IGZpbmQgYXNzZXQABXByaWNlAwkAZwIJAGQCCQBrAwkAZAIFCnR2bGlud2F2ZXMJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMFAmQ4BQ93aGlybHBvb2xzdXBwbHkFAmQ4CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAiFXSElSTFBPT0wgaXNzdWUgcHJpY2UgaW4gd2F2ZWxldHMJAGQCCQBrAwkAZAIFCnR2bGlud2F2ZXMJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMFAmQ4BQ93aGlybHBvb2xzdXBwbHkFAmQ4CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAiFXSElSTFBPT0wgaXNzdWUgcHJpY2UgaW4gd2F2ZWxldHMAD2JvbnVzcGVyY2VudGFnZQAKBQFpARVidXlXSElSTFBPT0x3aXRoV0FWRVMAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB3N1cnBsdXMJAGsDCQBlAgUFcHJpY2UFAmQ4CAUDcG10BmFtb3VudAUCZDgEBmFtb3VudAkAawMIBQNwbXQGYW1vdW50BQJkOAUFcHJpY2UEDHRvT3BlcmF0aW9ucwkAawMFBmFtb3VudAkAawMAGQUCZDgACQkAaAIAZAUCZDgEDHN1cHBseWFtb3VudAkAaQIJAGUCCQBlAggFA3BtdAZhbW91bnQFDHRvT3BlcmF0aW9ucwUHc3VycGx1cwACBBNzd2F2ZXNCYWxhbmNlQmVmb3JlCQDwBwIFBHRoaXMFBnN3YXZlcwMJAQIhPQIIBQNwbXQHYXNzZXRJZAUEdW5pdAkAAgECF2F0dGFjaCBXQVZFUyB0b2tlbiBvbmx5BBNTdXBwbHlXYXZlc01haW5Qb29sCQD8BwQJAQdBZGRyZXNzAQEaAVcglFxKrc/0SDk7iECzv9vujFCgp2rP2ugCBnN1cHBseQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQxzdXBwbHlhbW91bnQFA25pbAMJAAACBRNTdXBwbHlXYXZlc01haW5Qb29sBRNTdXBwbHlXYXZlc01haW5Qb29sBBhTdXBwbHlXYXZlc1dhdmVzRGVmaVBvb2wJAPwHBAkBB0FkZHJlc3MBARoBVxkLO48/zcX1AFJDuOumjMisvxQ5MT4kvgIGc3VwcGx5BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFDHN1cHBseWFtb3VudAUDbmlsAwkAAAIFGFN1cHBseVdhdmVzV2F2ZXNEZWZpUG9vbAUYU3VwcGx5V2F2ZXNXYXZlc0RlZmlQb29sBA1Td2F2ZXNEZXBvc2l0CQD8BwQJAQdBZGRyZXNzAQEaAVd9yXuTFHn/51HxsUrHb/lqHYCVR89YI34CB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUMdG9PcGVyYXRpb25zBQNuaWwDCQAAAgUNU3dhdmVzRGVwb3NpdAUNU3dhdmVzRGVwb3NpdAQSc3dhdmVzQmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMFBnN3YXZlcwQQc3dhdmVzRGlmZmVyZW5jZQkAZQIFEnN3YXZlc0JhbGFuY2VBZnRlcgUTc3dhdmVzQmFsYW5jZUJlZm9yZQkAzAgCCQEHUmVpc3N1ZQMFCXdoaXJscG9vbAkAawMJAGQCBQZhbW91bnQJAGkCBQZhbW91bnQABAkAZAIAZAUPYm9udXNwZXJjZW50YWdlAGQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAawMFBmFtb3VudAkAZAIAZAUPYm9udXNwZXJjZW50YWdlAGQFCXdoaXJscG9vbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFCm9wZXJhdGlvbnMJAGsDCQBpAgUGYW1vdW50AAQJAGQCAGQFD2JvbnVzcGVyY2VudGFnZQBkBQl3aGlybHBvb2wJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQpvcGVyYXRpb25zBRBzd2F2ZXNEaWZmZXJlbmNlBQZzd2F2ZXMJAMwIAgkBDEludGVnZXJFbnRyeQICIVdISVJMUE9PTCBpc3N1ZSBwcmljZSBpbiB3YXZlbGV0cwUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQICInN1cnBsdXMgdHJlYXN1cnkgdmFsdWUgaW4gd2F2ZWxldHMFCnR2bGlud2F2ZXMJAMwIAgkBDEludGVnZXJFbnRyeQICFldISVJMUE9PTCB0b3RhbCBzdXBwbHkFD3doaXJscG9vbHN1cHBseQkAzAgCCQEMSW50ZWdlckVudHJ5AgIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwkAZAIFB3N1cnBsdXMJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJQcmljZVN1cnBsdXNTdXBwbHkACQDMCAIJAQxJbnRlZ2VyRW50cnkCAg1XQVZFUyBpbiBwb29sBQt3YXZlc2lucG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgIMcHJvamVjdHN0YWtlBQxwcm9qZWN0c3Rha2UJAMwIAgkBDEludGVnZXJFbnRyeQICCnRvdGFsc3Rha2UFCnRvdGFsc3Rha2UJAMwIAgkBDEludGVnZXJFbnRyeQICIVdISVJMUE9PTCBpc3N1ZSBwcmljZSBpbiB3YXZlbGV0cwUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQICInN1cnBsdXMgdHJlYXN1cnkgdmFsdWUgaW4gd2F2ZWxldHMFCnR2bGlud2F2ZXMJAMwIAgkBDEludGVnZXJFbnRyeQICFldISVJMUE9PTCB0b3RhbCBzdXBwbHkFD3doaXJscG9vbHN1cHBseQkAzAgCCQEMSW50ZWdlckVudHJ5AgIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIcc3VycGx1cyByZWNlaXZlZCBpbiB3YXZlbGV0cwUDbmlsAWkBC2RFbnRyeVJlc2V0AAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIJAMwIAgkBDEludGVnZXJFbnRyeQICIVdISVJMUE9PTCBpc3N1ZSBwcmljZSBpbiB3YXZlbGV0cwkAaAIAAQUCZDgJAMwIAgkBDEludGVnZXJFbnRyeQICInN1cnBsdXMgdHJlYXN1cnkgdmFsdWUgaW4gd2F2ZWxldHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgIWV0hJUkxQT09MIHRvdGFsIHN1cHBseQUPd2hpcmxwb29sc3VwcGx5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzAAAFA25pbAFpARNQb29sT25lVG9rZW5TdXJwbHVzAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEDXN1cnBsdXNhbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMEE1Bvb2xPbmVUb2tlblN1cnBsdXMJAPwHBAkBB0FkZHJlc3MBARoBV/0lw71OYZRB77peEmOPxTlvSbWIOvXpbQIhZ2VuZXJhdGVJbmRleFdpdGhPbmVUb2tlbkFuZFN0YWtlCQDMCAIFCnBvb2xTdHJpbmcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUNc3VycGx1c2Ftb3VudAUDbmlsAwkAAAIFE1Bvb2xPbmVUb2tlblN1cnBsdXMFE1Bvb2xPbmVUb2tlblN1cnBsdXMJAMwIAgkBDEludGVnZXJFbnRyeQICHHN1cnBsdXMgcmVjZWl2ZWQgaW4gd2F2ZWxldHMJAGUCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhxzdXJwbHVzIHJlY2VpdmVkIGluIHdhdmVsZXRzBQ1zdXJwbHVzYW1vdW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMQm9vc3RQb29sQVBZAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEE3N3YXZlc0JhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwUGc3dhdmVzBAtzd2FwYnVybnh0bgkA/AcECQEHQWRkcmVzcwEFBnBvb2xJZAIEc3dhcAkAzAgCAgV3YXZlcwkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJYnVybnh0bklkCQDwBwIFBHRoaXMFCWJ1cm54dG5JZAUDbmlsAwkAAAIFC3N3YXBidXJueHRuBQtzd2FwYnVybnh0bgQNU3dhdmVzRGVwb3NpdAkA/AcECQEHQWRkcmVzcwEBGgFXfcl7kxR5/+dR8bFKx2/5ah2AlUfPWCN+AgdkZXBvc2l0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQDCQBmAgkAZQIICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQJkOAAACQBlAggJAO8HAQUEdGhpcwlhdmFpbGFibGUFAmQ4AAAFA25pbAMJAAACBQ1Td2F2ZXNEZXBvc2l0BQ1Td2F2ZXNEZXBvc2l0BBJzd2F2ZXNCYWxhbmNlQWZ0ZXIJAPAHAgUEdGhpcwUGc3dhdmVzBBBzd2F2ZXNEaWZmZXJlbmNlCQBlAgUSc3dhdmVzQmFsYW5jZUFmdGVyBRNzd2F2ZXNCYWxhbmNlQmVmb3JlBAVib29zdAkA/AcECQEHQWRkcmVzcwEFD3doaXJscG9vbFBvb2xJZAILYWRkQm9vc3RpbmcJAMwIAgAHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBnN3YXZlcwUQc3dhdmVzRGlmZmVyZW5jZQUDbmlsAwkAAAIFBWJvb3N0BQVib29zdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAEB/8qM=", "height": 3783226, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9FdLX9QKguTGYescu9nDi56QCVQxXyrGGYnZCihv38tC Next: DFdGzFpWUp2x2rgcJaH4c2uPHZ1pX4ur9dkqj1bdTSiu Diff:
Old | New | Differences | |
---|---|---|---|
9 | 9 | ||
10 | 10 | let operations = base58'3PBbLJcBjLWUZZrFFUk5s53TdTUneHXDc7e' | |
11 | 11 | ||
12 | + | let whirlpoolPoolId = base58'change' | |
13 | + | ||
12 | 14 | let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi' | |
13 | 15 | ||
14 | 16 | let waves = base58'WAVES' | |
17 | + | ||
18 | + | let swaves = base58'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7' | |
19 | + | ||
20 | + | let burnxtnId = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns' | |
15 | 21 | ||
16 | 22 | let wavesinpool = getIntegerValue(Address(poolId), (("global_" + toBase58String(waves)) + "_balance")) | |
17 | 23 | ||
32 | 38 | then (fraction((tvlinwaves + getIntegerValue(this, "surplus received in wavelets")), d8, whirlpoolsupply) + d8) | |
33 | 39 | else getIntegerValue(this, "WHIRLPOOL issue price in wavelets") | |
34 | 40 | ||
41 | + | let bonuspercentage = 10 | |
42 | + | ||
35 | 43 | @Callable(i) | |
36 | - | func buyWHIRLPOOLwithWAVES () = { | |
37 | - | let pmt = value(i.payments[0]) | |
38 | - | let surplus = fraction((price - d8), pmt.amount, d8) | |
39 | - | let amount = fraction(pmt.amount, d8, price) | |
40 | - | let toOperations = fraction(amount, fraction(25, d8, 9), (100 * d8)) | |
41 | - | let supplyamount = (((pmt.amount - toOperations) - surplus) / 4) | |
42 | - | if ((pmt.assetId != unit)) | |
43 | - | then throw("attach WAVES token only") | |
44 | - | else { | |
45 | - | let SupplyWavesMainPool = invoke(Address(base58'3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
46 | - | if ((SupplyWavesMainPool == SupplyWavesMainPool)) | |
47 | - | then { | |
48 | - | let SupplyWavesWavesDefiPool = invoke(Address(base58'3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
49 | - | if ((SupplyWavesWavesDefiPool == SupplyWavesWavesDefiPool)) | |
50 | - | then { | |
51 | - | let SupplyWavesNewWaves = invoke(Address(base58'3PHpuQUPVUoR3AYzFeJzeWJfYLsLTmWssVH'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
52 | - | if ((SupplyWavesNewWaves == SupplyWavesNewWaves)) | |
53 | - | then { | |
54 | - | let SupplyWavesViresV2 = invoke(Address(base58'3P9gtaWVnxA2TgFkvFMQSHPyfyNssjLGx5A'), "deposit", ["3PMYady7KzUNnRrFGzMBnq7akMDWiCQyoQz", true], [AttachedPayment(unit, supplyamount)]) | |
55 | - | if ((SupplyWavesViresV2 == SupplyWavesViresV2)) | |
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 | - | else throw("Strict value is not equal to itself.") | |
58 | - | } | |
59 | - | else throw("Strict value is not equal to itself.") | |
60 | - | } | |
61 | - | else throw("Strict value is not equal to itself.") | |
62 | - | } | |
63 | - | else throw("Strict value is not equal to itself.") | |
64 | - | } | |
65 | - | } | |
44 | + | func buyWHIRLPOOLwithWAVES () = if ((i.caller != this)) | |
45 | + | then throw("access only by project owner") | |
46 | + | else { | |
47 | + | let pmt = value(i.payments[0]) | |
48 | + | let surplus = fraction((price - d8), pmt.amount, d8) | |
49 | + | let amount = fraction(pmt.amount, d8, price) | |
50 | + | let toOperations = fraction(amount, fraction(25, d8, 9), (100 * d8)) | |
51 | + | let supplyamount = (((pmt.amount - toOperations) - surplus) / 2) | |
52 | + | let swavesBalanceBefore = assetBalance(this, swaves) | |
53 | + | if ((pmt.assetId != unit)) | |
54 | + | then throw("attach WAVES token only") | |
55 | + | else { | |
56 | + | let SupplyWavesMainPool = invoke(Address(base58'3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
57 | + | if ((SupplyWavesMainPool == SupplyWavesMainPool)) | |
58 | + | then { | |
59 | + | let SupplyWavesWavesDefiPool = invoke(Address(base58'3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
60 | + | if ((SupplyWavesWavesDefiPool == SupplyWavesWavesDefiPool)) | |
61 | + | then { | |
62 | + | let SwavesDeposit = invoke(Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV'), "deposit", nil, [AttachedPayment(unit, toOperations)]) | |
63 | + | if ((SwavesDeposit == SwavesDeposit)) | |
64 | + | then { | |
65 | + | let swavesBalanceAfter = assetBalance(this, swaves) | |
66 | + | let swavesDifference = (swavesBalanceAfter - swavesBalanceBefore) | |
67 | + | [Reissue(whirlpool, fraction((amount + (amount / 4)), (100 + bonuspercentage), 100), true), ScriptTransfer(i.caller, fraction(amount, (100 + bonuspercentage), 100), whirlpool), ScriptTransfer(Address(operations), fraction((amount / 4), (100 + bonuspercentage), 100), whirlpool), ScriptTransfer(Address(operations), swavesDifference, swaves), 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")))] | |
68 | + | } | |
69 | + | else throw("Strict value is not equal to itself.") | |
70 | + | } | |
71 | + | else throw("Strict value is not equal to itself.") | |
72 | + | } | |
73 | + | else throw("Strict value is not equal to itself.") | |
74 | + | } | |
75 | + | } | |
66 | 76 | ||
67 | 77 | ||
68 | 78 | ||
72 | 82 | ||
73 | 83 | ||
74 | 84 | @Callable(i) | |
75 | - | func | |
85 | + | func dEntryReset () = if ((i.caller != this)) | |
76 | 86 | then throw("access only by project owner") | |
77 | 87 | 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 | 88 | ||
90 | 100 | } | |
91 | 101 | ||
92 | 102 | ||
103 | + | ||
104 | + | @Callable(i) | |
105 | + | func BoostPoolAPY () = if ((i.caller != this)) | |
106 | + | then throw("access only by project owner") | |
107 | + | else { | |
108 | + | let swavesBalanceBefore = assetBalance(this, swaves) | |
109 | + | let swapburnxtn = invoke(Address(poolId), "swap", ["waves", 0], [AttachedPayment(burnxtnId, assetBalance(this, burnxtnId))]) | |
110 | + | if ((swapburnxtn == swapburnxtn)) | |
111 | + | then { | |
112 | + | let SwavesDeposit = invoke(Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV'), "deposit", nil, [AttachedPayment(unit, if (((wavesBalance(this).available - d8) > 0)) | |
113 | + | then (wavesBalance(this).available - d8) | |
114 | + | else 0)]) | |
115 | + | if ((SwavesDeposit == SwavesDeposit)) | |
116 | + | then { | |
117 | + | let swavesBalanceAfter = assetBalance(this, swaves) | |
118 | + | let swavesDifference = (swavesBalanceAfter - swavesBalanceBefore) | |
119 | + | let boost = invoke(Address(whirlpoolPoolId), "addBoosting", [7], [AttachedPayment(swaves, swavesDifference)]) | |
120 | + | if ((boost == boost)) | |
121 | + | then nil | |
122 | + | else throw("Strict value is not equal to itself.") | |
123 | + | } | |
124 | + | else throw("Strict value is not equal to itself.") | |
125 | + | } | |
126 | + | else throw("Strict value is not equal to itself.") | |
127 | + | } | |
128 | + | ||
129 | + |
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 | + | let whirlpoolPoolId = base58'change' | |
13 | + | ||
12 | 14 | let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi' | |
13 | 15 | ||
14 | 16 | let waves = base58'WAVES' | |
17 | + | ||
18 | + | let swaves = base58'YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7' | |
19 | + | ||
20 | + | let burnxtnId = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns' | |
15 | 21 | ||
16 | 22 | let wavesinpool = getIntegerValue(Address(poolId), (("global_" + toBase58String(waves)) + "_balance")) | |
17 | 23 | ||
18 | 24 | let projectstake = getIntegerValue(Address(poolId), ("3PAkmJniMgnnAej5pYf2jFYkCbZow5pt9tr" + "_indexStaked")) | |
19 | 25 | ||
20 | 26 | let totalstake = getIntegerValue(Address(poolId), "global_poolToken_amount") | |
21 | 27 | ||
22 | 28 | let tvlinwaves = fraction((wavesinpool * 10), projectstake, totalstake) | |
23 | 29 | ||
24 | 30 | let whirlpoolsupply = match assetInfo(whirlpool) { | |
25 | 31 | case asset: Asset => | |
26 | 32 | asset.quantity | |
27 | 33 | case _ => | |
28 | 34 | throw("Can't find asset") | |
29 | 35 | } | |
30 | 36 | ||
31 | 37 | let price = if (((fraction((tvlinwaves + getIntegerValue(this, "surplus received in wavelets")), d8, whirlpoolsupply) + d8) >= getIntegerValue(this, "WHIRLPOOL issue price in wavelets"))) | |
32 | 38 | then (fraction((tvlinwaves + getIntegerValue(this, "surplus received in wavelets")), d8, whirlpoolsupply) + d8) | |
33 | 39 | else getIntegerValue(this, "WHIRLPOOL issue price in wavelets") | |
34 | 40 | ||
41 | + | let bonuspercentage = 10 | |
42 | + | ||
35 | 43 | @Callable(i) | |
36 | - | func buyWHIRLPOOLwithWAVES () = { | |
37 | - | let pmt = value(i.payments[0]) | |
38 | - | let surplus = fraction((price - d8), pmt.amount, d8) | |
39 | - | let amount = fraction(pmt.amount, d8, price) | |
40 | - | let toOperations = fraction(amount, fraction(25, d8, 9), (100 * d8)) | |
41 | - | let supplyamount = (((pmt.amount - toOperations) - surplus) / 4) | |
42 | - | if ((pmt.assetId != unit)) | |
43 | - | then throw("attach WAVES token only") | |
44 | - | else { | |
45 | - | let SupplyWavesMainPool = invoke(Address(base58'3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
46 | - | if ((SupplyWavesMainPool == SupplyWavesMainPool)) | |
47 | - | then { | |
48 | - | let SupplyWavesWavesDefiPool = invoke(Address(base58'3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
49 | - | if ((SupplyWavesWavesDefiPool == SupplyWavesWavesDefiPool)) | |
50 | - | then { | |
51 | - | let SupplyWavesNewWaves = invoke(Address(base58'3PHpuQUPVUoR3AYzFeJzeWJfYLsLTmWssVH'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
52 | - | if ((SupplyWavesNewWaves == SupplyWavesNewWaves)) | |
53 | - | then { | |
54 | - | let SupplyWavesViresV2 = invoke(Address(base58'3P9gtaWVnxA2TgFkvFMQSHPyfyNssjLGx5A'), "deposit", ["3PMYady7KzUNnRrFGzMBnq7akMDWiCQyoQz", true], [AttachedPayment(unit, supplyamount)]) | |
55 | - | if ((SupplyWavesViresV2 == SupplyWavesViresV2)) | |
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 | - | else throw("Strict value is not equal to itself.") | |
58 | - | } | |
59 | - | else throw("Strict value is not equal to itself.") | |
60 | - | } | |
61 | - | else throw("Strict value is not equal to itself.") | |
62 | - | } | |
63 | - | else throw("Strict value is not equal to itself.") | |
64 | - | } | |
65 | - | } | |
44 | + | func buyWHIRLPOOLwithWAVES () = if ((i.caller != this)) | |
45 | + | then throw("access only by project owner") | |
46 | + | else { | |
47 | + | let pmt = value(i.payments[0]) | |
48 | + | let surplus = fraction((price - d8), pmt.amount, d8) | |
49 | + | let amount = fraction(pmt.amount, d8, price) | |
50 | + | let toOperations = fraction(amount, fraction(25, d8, 9), (100 * d8)) | |
51 | + | let supplyamount = (((pmt.amount - toOperations) - surplus) / 2) | |
52 | + | let swavesBalanceBefore = assetBalance(this, swaves) | |
53 | + | if ((pmt.assetId != unit)) | |
54 | + | then throw("attach WAVES token only") | |
55 | + | else { | |
56 | + | let SupplyWavesMainPool = invoke(Address(base58'3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
57 | + | if ((SupplyWavesMainPool == SupplyWavesMainPool)) | |
58 | + | then { | |
59 | + | let SupplyWavesWavesDefiPool = invoke(Address(base58'3P4DK5VzDwL3vfc5ahUEhtoe5ByZNyacJ3X'), "supply", nil, [AttachedPayment(unit, supplyamount)]) | |
60 | + | if ((SupplyWavesWavesDefiPool == SupplyWavesWavesDefiPool)) | |
61 | + | then { | |
62 | + | let SwavesDeposit = invoke(Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV'), "deposit", nil, [AttachedPayment(unit, toOperations)]) | |
63 | + | if ((SwavesDeposit == SwavesDeposit)) | |
64 | + | then { | |
65 | + | let swavesBalanceAfter = assetBalance(this, swaves) | |
66 | + | let swavesDifference = (swavesBalanceAfter - swavesBalanceBefore) | |
67 | + | [Reissue(whirlpool, fraction((amount + (amount / 4)), (100 + bonuspercentage), 100), true), ScriptTransfer(i.caller, fraction(amount, (100 + bonuspercentage), 100), whirlpool), ScriptTransfer(Address(operations), fraction((amount / 4), (100 + bonuspercentage), 100), whirlpool), ScriptTransfer(Address(operations), swavesDifference, swaves), 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")))] | |
68 | + | } | |
69 | + | else throw("Strict value is not equal to itself.") | |
70 | + | } | |
71 | + | else throw("Strict value is not equal to itself.") | |
72 | + | } | |
73 | + | else throw("Strict value is not equal to itself.") | |
74 | + | } | |
75 | + | } | |
66 | 76 | ||
67 | 77 | ||
68 | 78 | ||
69 | 79 | @Callable(i) | |
70 | 80 | 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 | 81 | ||
72 | 82 | ||
73 | 83 | ||
74 | 84 | @Callable(i) | |
75 | - | func | |
85 | + | func dEntryReset () = if ((i.caller != this)) | |
76 | 86 | then throw("access only by project owner") | |
77 | 87 | 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 | 88 | ||
79 | 89 | ||
80 | 90 | ||
81 | 91 | @Callable(i) | |
82 | 92 | func PoolOneTokenSurplus () = if ((i.caller != this)) | |
83 | 93 | then throw("access only by project owner") | |
84 | 94 | else { | |
85 | 95 | let surplusamount = getIntegerValue(this, "surplus received in wavelets") | |
86 | 96 | let PoolOneTokenSurplus = invoke(Address(base58'3PR1Qvi9mHT35SwWEkLSqqE2L8thiPLdVWU'), "generateIndexWithOneTokenAndStake", [poolString], [AttachedPayment(unit, surplusamount)]) | |
87 | 97 | if ((PoolOneTokenSurplus == PoolOneTokenSurplus)) | |
88 | 98 | then [IntegerEntry("surplus received in wavelets", (getIntegerValue(this, "surplus received in wavelets") - surplusamount))] | |
89 | 99 | else throw("Strict value is not equal to itself.") | |
90 | 100 | } | |
91 | 101 | ||
92 | 102 | ||
103 | + | ||
104 | + | @Callable(i) | |
105 | + | func BoostPoolAPY () = if ((i.caller != this)) | |
106 | + | then throw("access only by project owner") | |
107 | + | else { | |
108 | + | let swavesBalanceBefore = assetBalance(this, swaves) | |
109 | + | let swapburnxtn = invoke(Address(poolId), "swap", ["waves", 0], [AttachedPayment(burnxtnId, assetBalance(this, burnxtnId))]) | |
110 | + | if ((swapburnxtn == swapburnxtn)) | |
111 | + | then { | |
112 | + | let SwavesDeposit = invoke(Address(base58'3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV'), "deposit", nil, [AttachedPayment(unit, if (((wavesBalance(this).available - d8) > 0)) | |
113 | + | then (wavesBalance(this).available - d8) | |
114 | + | else 0)]) | |
115 | + | if ((SwavesDeposit == SwavesDeposit)) | |
116 | + | then { | |
117 | + | let swavesBalanceAfter = assetBalance(this, swaves) | |
118 | + | let swavesDifference = (swavesBalanceAfter - swavesBalanceBefore) | |
119 | + | let boost = invoke(Address(whirlpoolPoolId), "addBoosting", [7], [AttachedPayment(swaves, swavesDifference)]) | |
120 | + | if ((boost == boost)) | |
121 | + | then nil | |
122 | + | else throw("Strict value is not equal to itself.") | |
123 | + | } | |
124 | + | else throw("Strict value is not equal to itself.") | |
125 | + | } | |
126 | + | else throw("Strict value is not equal to itself.") | |
127 | + | } | |
128 | + | ||
129 | + |
github/deemru/w8io/0e76f2f 64.77 ms ◑