Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # rate, timestamp, tx
- match tx {
- case d:DataTransaction =>
- let k0 = d.data[0].key
- let event = take(k0, size(k0) - 5)
- let txid = extract(getString(d.data, event + "_tx"))
- let exchangeTx = extract(match transactionById(fromBase58String(txid)) {
- case e:ExchangeTransaction => e
- case _ => unit
- })
- let prevTs = getInteger(tx.sender, event + "_timestamp")
- let eventTs = takeRight(event, 10)
- let amountAsset = exchangeTx.buyOrder.assetPair.amountAsset
- let priceAsset = exchangeTx.buyOrder.assetPair.priceAsset
- let amountAssetCode =
- if amountAsset == unit then "WAVES"
- else if amountAsset == base58'Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck' then "USD"
- else if amountAsset == base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS' then "BTC"
- else if amountAsset == base58'4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8' then "VST"
- else "unknown"
- let priceAssetCode =
- if priceAsset == unit then "WAVES"
- else if priceAsset == base58'Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck' then "USD"
- else if priceAsset == base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS' then "BTC"
- else if priceAsset == base58'4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8' then "VST"
- else "unknown"
- let eventStart = "dex:" + amountAssetCode + "/" + priceAssetCode + ":"
- size(d.data) == 5
- && take(event, size(eventStart)) == eventStart
- && exchangeTx.buyOrder.matcherPublicKey == base58'7kPFrHDiGw1rCm7LPszuECwWYL3dMf6iMifLRDJQZMzy'
- && d.data[0].key == event + "_rate"
- && d.data[1].key == event + "_timestamp"
- && d.data[2].key == event + "_tx"
- && d.data[3].key == event + "_eventts"
- && d.data[4].key == event + "_height"
- && d.data[0].value == exchangeTx.price
- && d.data[1].value == exchangeTx.timestamp
- && d.data[2].value == txid
- && (!isDefined(prevTs) || (exchangeTx.timestamp < extract(prevTs)))
- && toString(extract(getInteger(d.data, event + "_eventts"))) == eventTs
- && extract(getInteger(d.data, event + "_eventts")) * 1000 <= exchangeTx.timestamp
- && d.data[4].value == transactionHeightById(fromBase58String(txid))
- case _ => sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement