@@ -6,10 +6,14 @@ package main
66
77// fetch_transactions je Rust funkcija koja vraca podatke o transakcijama iz poslednjeg bloka
88char* fetch_transactions(const char* rpc_url);
9+
10+ // fetch_last_5_blocks je Rust funkcija koja vraca podatke o transakciji maksimalnog potrosenog gasa u poslednjih 5 blokova
11+ char* fetch_last_5_blocks(const char* rpc_url);
912*/
1013import "C"
1114
1215import (
16+ "encoding/json"
1317 "fmt"
1418 "unsafe"
1519
@@ -21,28 +25,49 @@ import (
2125
2226func main () {
2327
24- rpcURL , recipientAddress , privateKeyHex := config .LoadEnv ()
28+ rpcTestnetURL , rpcMainnetURL , recipientAddress , privateKeyHex := config .LoadEnv ()
2529
26- blockNumber := rpc .GetLatestBlock (rpcURL )
30+ blockNumber := rpc .GetLatestBlock (rpcTestnetURL )
2731 fmt .Println (blockNumber )
2832 fmt .Println ()
2933
3034 fakeBalance := utilis .EthToHex (100 ) // 100 ETH
31- transaction .SetFakeBalance (rpcURL , recipientAddress , fakeBalance )
35+ transaction .SetFakeBalance (rpcTestnetURL , recipientAddress , fakeBalance )
3236
3337 sendEth := 1
34- transaction .SendTransaction (rpcURL , recipientAddress , int64 (sendEth ), privateKeyHex )
38+ transaction .SendTransaction (rpcTestnetURL , recipientAddress , int64 (sendEth ), privateKeyHex )
3539
36- //---------------------------
40+ // === Deo koji zove Rust FFI za transakcije ===
3741 fmt .Println ()
3842
39- cRpcURL := C .CString (rpcURL )
40- defer C .free (unsafe .Pointer (cRpcURL ))
43+ cRpcTestnetURL := C .CString (rpcTestnetURL )
44+ defer C .free (unsafe .Pointer (cRpcTestnetURL ))
4145
42- result := C .fetch_transactions (cRpcURL )
46+ result := C .fetch_transactions (cRpcTestnetURL )
4347 defer C .free (unsafe .Pointer (result ))
4448
4549 goResult := C .GoString (result )
4650 fmt .Println ("Rust FFI: Podaci o transakcijama iz poslednjeg bloka:\n " , goResult )
4751
52+ // === Deo koji zove Rust FFI za 5 blokova ===
53+ fmt .Println ()
54+
55+ cRpcMainnetURL := C .CString (rpcMainnetURL )
56+ defer C .free (unsafe .Pointer (cRpcMainnetURL ))
57+
58+ resultArray := C .fetch_last_5_blocks (cRpcMainnetURL )
59+ defer C .free (unsafe .Pointer (resultArray ))
60+ goArray := C .GoString (resultArray )
61+
62+ var summaries []rpc.TxSummary
63+ err := json .Unmarshal ([]byte (goArray ), & summaries )
64+ if err != nil {
65+ fmt .Println ("Greska pri parsiranju JSON-a iz Rust-a:" , err )
66+ return
67+ }
68+
69+ for _ , s := range summaries {
70+ fmt .Printf ("Blok %s | TX %s | Gas %d | %.3f%% u bloku\n " ,
71+ s .BlockNumber , s .TxHash , s .GasUsed , s .PercentInBlock )
72+ }
4873}
0 commit comments