tx · BD1exPsvjoCFjMjbkwn6SUuASZujD2o4zWzTAbWeEA7c

3MtSS7RTsDoG91pR5gx5EWzGjJKuciDPeFN:  -0.01400000 Waves

2020.05.20 23:41 [1007080] smart account 3MtSS7RTsDoG91pR5gx5EWzGjJKuciDPeFN > SELF 0.00000000 Waves

{ "type": 13, "id": "BD1exPsvjoCFjMjbkwn6SUuASZujD2o4zWzTAbWeEA7c", "fee": 1400000, "feeAssetId": null, "timestamp": 1590007198542, "version": 1, "sender": "3MtSS7RTsDoG91pR5gx5EWzGjJKuciDPeFN", "senderPublicKey": "8ffZxZakt7dEoMzAQT8TtX1zEBkt7fy8Z4amcAGGP4n6", "proofs": [ "3FRJDisPK6NGtnAtaGP5prS8SaKSZpZL2ryTrvxDKbEiAXmVUPVE5Aubn8VMCUAZ39pea6fVvCMhaZxx7SRg9De4" ], "script": "base64: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", "chainId": 84, "height": 1007080, "spentComplexity": 0 } View: original | compacted Prev: 9kQviR45d23zLuBu3NCUdwpWR7QSurqQVELyvXSbrD29 Next: HMGuGqU11dNj25r6iVT5P9MJZpKE9QyiKWtxdpBBgFwv Diff:
OldNewDifferences
3131
3232
3333 @Callable(i)
34-func newAccredited (opEmail,opPass,opPubKey,opData,opLevel) = {
34+func newAccredited (opEmail,opPass,opPubKey,opSign,opLevel) = {
3535 let pubKey = toBase58String(i.callerPublicKey)
3636 let secEmail = getSecureHash(opEmail)
3737 let secPass = getSecureHash(opPass)
3939 then throw("Not auth to add operator")
4040 else if ((getStrByKey(secEmail) != NONE))
4141 then throw("This operator already added")
42- else {
43- let LB = lastBlock.height
44- WriteSet([DataEntry(secEmail, secPass), DataEntry((secEmail + "_opKey"), opPubKey), DataEntry((secEmail + "_opData"), opData), DataEntry((secEmail + "_opLevel"), opLevel), DataEntry((secEmail + "_opAuth"), ("Allow,0," + toString(lastBlock.height)))])
45- }
42+ else if ((sigVerify(toBytes((opEmail + opPass)), fromBase58String(opSign), fromBase58String(opPubKey)) == false))
43+ then throw("Sign not verified")
44+ else WriteSet([DataEntry(secEmail, secPass), DataEntry((secEmail + "_opKey"), opPubKey), DataEntry((secEmail + "_opSign"), opSign), DataEntry((secEmail + "_opLevel"), opLevel), DataEntry((secEmail + "_opAuth"), ("Allow,0," + toString(lastBlock.height)))])
4645 }
4746
4847
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let NONE = "none"
55
66 let admPubKey = base58'5xiFtrMoXunfGTJwkeA26uAcy2ByUajvA7WQ7xNNSa8b'
77
88 func getNumberByKey (key) = {
99 let num = match getInteger(this, key) {
1010 case a: Int =>
1111 a
1212 case _ =>
1313 0
1414 }
1515 num
1616 }
1717
1818
1919 func getStrByKey (key) = {
2020 let str = match getString(this, key) {
2121 case a: String =>
2222 a
2323 case _ =>
2424 NONE
2525 }
2626 str
2727 }
2828
2929
3030 func getSecureHash (key) = toBase58String(keccak256(blake2b256(toBytes(key))))
3131
3232
3333 @Callable(i)
34-func newAccredited (opEmail,opPass,opPubKey,opData,opLevel) = {
34+func newAccredited (opEmail,opPass,opPubKey,opSign,opLevel) = {
3535 let pubKey = toBase58String(i.callerPublicKey)
3636 let secEmail = getSecureHash(opEmail)
3737 let secPass = getSecureHash(opPass)
3838 if ((pubKey != toBase58String(admPubKey)))
3939 then throw("Not auth to add operator")
4040 else if ((getStrByKey(secEmail) != NONE))
4141 then throw("This operator already added")
42- else {
43- let LB = lastBlock.height
44- WriteSet([DataEntry(secEmail, secPass), DataEntry((secEmail + "_opKey"), opPubKey), DataEntry((secEmail + "_opData"), opData), DataEntry((secEmail + "_opLevel"), opLevel), DataEntry((secEmail + "_opAuth"), ("Allow,0," + toString(lastBlock.height)))])
45- }
42+ else if ((sigVerify(toBytes((opEmail + opPass)), fromBase58String(opSign), fromBase58String(opPubKey)) == false))
43+ then throw("Sign not verified")
44+ else WriteSet([DataEntry(secEmail, secPass), DataEntry((secEmail + "_opKey"), opPubKey), DataEntry((secEmail + "_opSign"), opSign), DataEntry((secEmail + "_opLevel"), opLevel), DataEntry((secEmail + "_opAuth"), ("Allow,0," + toString(lastBlock.height)))])
4645 }
4746
4847
4948
5049 @Callable(i)
5150 func recovery (opEmail) = {
5251 let pubKey = toBase58String(i.callerPublicKey)
5352 let pay = extract(i.payment)
5453 let secEmail = getSecureHash(opEmail)
5554 if ((getStrByKey(secEmail) == NONE))
5655 then throw("This operator does not exist")
5756 else if (((getStrByKey(secEmail) + "_opKey") != pubKey))
5857 then if (if ((pay.assetId != base58''))
5958 then true
6059 else (20000000 >= pay.amount))
6160 then throw("Need at least 2 Waves for auth change password")
6261 else TransferSet([ScriptTransfer(addressFromStringValue("3MpBUJbYZVA8iwoesCYaSytA82dVPyzVpmW"), 25000000, pay.assetId)])
6362 else {
6463 let auth = split(getStrByKey((secEmail + "_opAuth")), ",")
6564 if (if ((auth[0] != "Allow"))
6665 then true
6766 else (auth[0] != "Recovery"))
6867 then throw("Request not allowed")
6968 else {
7069 let multi = parseIntValue(auth[1])
7170 WriteSet([DataEntry((secEmail + "_opAuth"), ((("Recovery," + toString((multi + 1))) + ",") + toString((lastBlock.height + (multi * 60)))))])
7271 }
7372 }
7473 }
7574
7675

github/deemru/w8io/c3f4982 
56.78 ms