tx · edHHWZhzMocFaEmRgCHdG39rnEcosEpcE9P1JVNUaNo 3Moz6HJhucpFh4V3VScXhd9efei4Curytfj: -0.01000000 Waves 2023.11.16 21:35 [2846300] smart account 3Moz6HJhucpFh4V3VScXhd9efei4Curytfj > SELF 0.00000000 Waves
{ "type": 13, "id": "edHHWZhzMocFaEmRgCHdG39rnEcosEpcE9P1JVNUaNo", "fee": 1000000, "feeAssetId": null, "timestamp": 1700159806412, "version": 2, "chainId": 84, "sender": "3Moz6HJhucpFh4V3VScXhd9efei4Curytfj", "senderPublicKey": "Ec1VLg3r1E7mwHmaNidmoKrFAUJ55UVJFq3J1YKRy5Zm", "proofs": [ "3LyJCwpjJGsKsCTuX98DQrK9FnrtM2LGpT3QM3S8w6R1xiVjoHnTKozFkacHnHefB2UEjs9wCVLTKAcWfRTgKPe8" ], "script": "base64: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", "height": 2846300, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7TxoJfzsmTY4kCjXtwb4Rrio9Vm5m292D5RKdp53fR9B Next: 6DrJB7N5VQq3DfNbszAaJgPxpfNyCvSkCshDXW3uSv4b Full:
Old | New | Differences | |
---|---|---|---|
1 | - | {-# STDLIB_VERSION | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let species = ["Iris-setosa", "Iris-versicolor", "Iris-virginica"] | |
5 | - | ||
6 | - | let weight1 = [[6157, -3066, 12102, 17305], [-3936, -2569, -2816, 392], [6633, 300, 11435, 11685], [4149, -4959, -3121, 917], [6310, -9286, 8772, 266], [-527, 5610, -2987, -12595], [6988, -5565, 11513, 14717], [2688, 5935, -9544, -8824], [2346, 6692, -6381, -13268], [2916, 10874, -10078, -11116], [-3257, 18970, -13738, -18644], [10669, -7058, 16831, 17339]] | |
7 | - | ||
8 | - | let biases1 = [-2287, -3248, -5442, -3810, 3699, 11759, -1281, 11270, 12675, 12008, 10765, -2116] | |
9 | - | ||
10 | - | let weight2 = [[-14019, -170, -13032, 2440, -11741, 13771, -15437, 12736, 13684, 14834, 18289, -12514], [-787, 525, -5546, -28, 3778, 14674, 330, 15426, 13747, 10007, -21208, 465], [6177, 1093, 9648, 1825, 1335, -20733, 6854, -25641, -25315, -18382, -8672, 7714]] | |
11 | - | ||
12 | - | let bias2 = [6583, 6472, -4596] | |
13 | - | ||
14 | - | func relu (x) = if ((x > 0)) | |
15 | - | then x | |
16 | - | else 0 | |
17 | 4 | ||
18 | 5 | ||
19 | - | func calc (input,weight,bias) = { | |
20 | - | let calc = (((((input[0] * weight[0]) + (input[1] * weight[1])) + (input[2] * weight[2])) + (input[3] * weight[3])) + bias) | |
21 | - | calc | |
6 | + | @Callable(i) | |
7 | + | func call (input,input2) = [IntegerEntry("1", input[0]), IntegerEntry("2", input[1])] | |
8 | + | ||
9 | + | ||
10 | + | ||
11 | + | @Callable(i) | |
12 | + | func registerData (clientInput,opponentInput,id,oppAddress) = { | |
13 | + | let client = toString(i.caller) | |
14 | + | let txId = toBase58String(i.transactionId) | |
15 | + | [StringEntry(id, txId), IntegerEntry((((txId + "_") + client) + "_age"), clientInput[0]), IntegerEntry((((txId + "_") + client) + "_sex"), clientInput[1]), IntegerEntry((((txId + "_") + client) + "_damage"), clientInput[2]), IntegerEntry((((txId + "_") + client) + "_fac1"), clientInput[3]), IntegerEntry((((txId + "_") + client) + "_fac2"), clientInput[4]), IntegerEntry((((txId + "_") + client) + "_fac3"), clientInput[5]), IntegerEntry((((txId + "_") + client) + "_fac4"), clientInput[6]), IntegerEntry((((txId + "_") + client) + "_vio1"), clientInput[7]), IntegerEntry((((txId + "_") + client) + "_vio2"), clientInput[8]), IntegerEntry((((txId + "_") + client) + "_vio3"), clientInput[9]), IntegerEntry((((txId + "_") + client) + "_vio4"), clientInput[10]), IntegerEntry((((txId + "_") + oppAddress) + "_age"), opponentInput[0]), IntegerEntry((((txId + "_") + oppAddress) + "_sex"), opponentInput[1]), IntegerEntry((((txId + "_") + oppAddress) + "_damage"), opponentInput[2]), IntegerEntry((((txId + "_") + oppAddress) + "_fac1"), opponentInput[3]), IntegerEntry((((txId + "_") + oppAddress) + "_fac2"), opponentInput[4]), IntegerEntry((((txId + "_") + oppAddress) + "_fac3"), opponentInput[5]), IntegerEntry((((txId + "_") + oppAddress) + "_fac4"), opponentInput[6]), IntegerEntry((((txId + "_") + oppAddress) + "_vio1"), opponentInput[7]), IntegerEntry((((txId + "_") + oppAddress) + "_vio2"), opponentInput[8]), IntegerEntry((((txId + "_") + oppAddress) + "_vio3"), opponentInput[9]), IntegerEntry((((txId + "_") + oppAddress) + "_vio4"), opponentInput[10])] | |
22 | 16 | } | |
23 | 17 | ||
24 | 18 | ||
25 | - | func calc_second_layer (input,weight,bias) = { | |
26 | - | let calc_second = (((((((((((((input[0] * weight[0]) + (input[1] * weight[1])) + (input[2] * weight[2])) + (input[3] * weight[3])) + (input[4] * weight[4])) + (input[5] * weight[5])) + (input[6] * weight[6])) + (input[7] * weight[7])) + (input[8] * weight[8])) + (input[9] * weight[9])) + (input[10] * weight[10])) + (input[11] * weight[11])) + bias) | |
27 | - | calc_second | |
28 | - | } | |
29 | - | ||
30 | - | ||
31 | - | func calculateFirstLayer (input) = { | |
32 | - | let output_layer1 = relu(calc(input, weight1[0], biases1[0])) | |
33 | - | let output_layer2 = relu(calc(input, weight1[1], biases1[1])) | |
34 | - | let output_layer3 = relu(calc(input, weight1[2], biases1[2])) | |
35 | - | let output_layer4 = relu(calc(input, weight1[3], biases1[3])) | |
36 | - | let output_layer5 = relu(calc(input, weight1[4], biases1[4])) | |
37 | - | let output_layer6 = relu(calc(input, weight1[5], biases1[5])) | |
38 | - | let output_layer7 = relu(calc(input, weight1[6], biases1[6])) | |
39 | - | let output_layer8 = relu(calc(input, weight1[7], biases1[7])) | |
40 | - | let output_layer9 = relu(calc(input, weight1[8], biases1[8])) | |
41 | - | let output_layer10 = relu(calc(input, weight1[9], biases1[9])) | |
42 | - | let output_layer11 = relu(calc(input, weight1[10], biases1[10])) | |
43 | - | let output_layer12 = relu(calc(input, weight1[11], biases1[11])) | |
44 | - | [output_layer1, output_layer2, output_layer3, output_layer4, output_layer5, output_layer6, output_layer7, output_layer8, output_layer9, output_layer10, output_layer11, output_layer12] | |
45 | - | } | |
46 | - | ||
47 | - | ||
48 | - | func calculateSecondLayer (input) = { | |
49 | - | let output_layer1 = calc_second_layer(input, weight2[0], bias2[0]) | |
50 | - | let output_layer2 = calc_second_layer(input, weight2[1], bias2[1]) | |
51 | - | let output_layer3 = calc_second_layer(input, weight2[2], bias2[2]) | |
52 | - | [output_layer1, output_layer2, output_layer3] | |
53 | - | } | |
54 | - | ||
55 | - | ||
56 | - | func forward_prop (input) = { | |
57 | - | let first_layer = calculateFirstLayer(input) | |
58 | - | let second_layer = calculateSecondLayer(first_layer) | |
59 | - | second_layer | |
60 | - | } | |
61 | - | ||
62 | - | ||
63 | - | func find_pred (output) = { | |
64 | - | let max1 = if ((output[0] > output[1])) | |
65 | - | then 0 | |
66 | - | else 1 | |
67 | - | let max2 = if ((max1 > output[2])) | |
68 | - | then max1 | |
69 | - | else 2 | |
70 | - | max2 | |
71 | - | } | |
72 | - | ||
73 | - | ||
74 | - | @Callable(i) | |
75 | - | func prediction (input) = { | |
76 | - | let output = forward_prop(input) | |
77 | - | let callerAddress = toString(i.caller) | |
78 | - | let pred = find_pred(output) | |
79 | - | [IntegerEntry((callerAddress + "_1"), output[0]), IntegerEntry((callerAddress + "_2"), output[1]), IntegerEntry((callerAddress + "_3"), output[2]), StringEntry((callerAddress + "_p"), species[pred])] | |
80 | - | } | |
81 | - | ||
19 | + | @Verifier(tx) | |
20 | + | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
82 | 21 |
github/deemru/w8io/169f3d6 64.81 ms ◑![]()