-
Notifications
You must be signed in to change notification settings - Fork 0
/
GameController.php
78 lines (64 loc) · 2.03 KB
/
GameController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Storage;
use \phpseclib\Crypt\RSA;
use \deemru\WavesKit;
class GameController extends Controller
{
public function Sign($data)
{
$privateKeys[0] = Storage::disk('local')->get('key1');
$privateKeys[1] = Storage::disk('local')->get('key2');
$privateKeys[2] = Storage::disk('local')->get('key3');
$rsa = new RSA();
foreach ($privateKeys as $index => $privateKey) {
$rsa->loadKey($privateKey);
$rsa->setHash('sha256');
$rsa->setSignatureMode(RSA::SIGNATURE_PKCS1);
$sign[$index] = $rsa->sign($data);
}
$answer = [
[
'data' => $data,
'sign' => $sign[0],
],
[
'data' => $data,
'sign' => $sign[1],
],
[
'data' => $data,
'sign' => $sign[2],
]
];
$blockchainAnswer = $this->sendtoBlockchain($answer);
if (empty($blockchainAnswer)) {
$frontendAnswer[] = ['status' => 'error'];
return response()->json($frontendAnswer, 400);
} else {
$frontendAnswer[] = [
'status' => 'ok',
'id' => $blockchainAnswer
];
return json_encode($frontendAnswer, 480);
}
}
private function sendtoBlockchain($data)
{
$wk = new WavesKit('T');
$seed = 'your seed here';
$dApp = 'your dApp address';
$args = [
$data[0]['data'],
[ $data[0]['sign'] ],
[ $data[1]['sign'] ],
[ $data[2]['sign'] ],
];
$payments = [];
$wk->setSeed($seed);
$tx = $wk->txInvokeScript($dApp, 'dApp method', $args, $payments); // second argument of this, it's your dApp method. Please don't forget to change it.
$tx = $wk->txSign($tx);
$tx = $wk->txBroadcast($tx);
return $tx['id'];
}
}