@@ -13,7 +13,7 @@ It has all cryptographic verification algorithms, including validator-signature-
13
13
14
14
## Features
15
15
16
- Compatible with testnet 2020/2/29 (commit hash [ 63e2d574 ] ( https://github.com/libra/libra/commit/63e2d5747d98656296da2f07ae84c8e1eed3c382 ) ).
16
+ Compatible with testnet 2020/4/8 (commit hash [ 718ace82 ] ( https://github.com/libra/libra/commit/718ace82250e7bd64e08d7d61951bfaa8cee9ea4 ) ).
17
17
18
18
- Data models with all necessary cryptographic verification algorithms
19
19
- Ledger state: signature-based consensus verification
@@ -60,19 +60,18 @@ import (
60
60
)
61
61
62
62
const (
63
- defaultServer = " ac.testnet.libra.org:8000"
64
- trustedPeersFile = " ../consensus_peers.config.toml "
63
+ defaultServer = " ac.testnet.libra.org:8000"
64
+ waypoint = " 0:4d4d0feaa9378069f8fcee71980e142273837e108702d8d7f93a8419e2736f3f "
65
65
)
66
66
67
67
func main () {
68
- c , err := client.New (defaultServer, trustedPeersFile )
68
+ c , err := client.New (defaultServer, waypoint )
69
69
if err != nil {
70
70
log.Fatal (err)
71
71
}
72
72
defer c.Close ()
73
73
74
- addrStr := " 18b553473df736e5e363e7214bd624735ca66ac22a7048e3295c9b9b9adfc26a"
75
- // Parse hex string into binary address
74
+ addrStr := " 42f5745128c05452a0c68272de8042b1"
76
75
addr := client.MustToAddress (addrStr)
77
76
78
77
// provenState is cryptographically proven state of account
@@ -86,45 +85,47 @@ func main() {
86
85
return
87
86
}
88
87
89
- provenResource , err := c. GetLibraCoinResourceFromAccountBlob ( provenState.GetAccountBlob ())
88
+ ar , br , err := provenState.GetAccountBlob (). GetLibraResources ( )
90
89
if err != nil {
91
90
log.Fatal (err)
92
91
}
93
92
94
- log.Printf (" Balance (microLibra): %d " , provenResource.GetBalance ())
95
- log.Printf (" Sequence Number: %d " , provenResource.GetSequenceNumber ())
93
+ log.Printf (" Balance: %d " , br.Coin )
94
+ log.Printf (" Sequence Number: %d " , ar.SequenceNumber )
95
+ log.Printf (" Authentication key: %v " , hex.EncodeToString (ar.AuthenticationKey ))
96
96
}
97
97
```
98
98
99
99
### Make peer-to-peer transaction
100
100
101
101
``` golang
102
- // Get current account sequence of sender
103
- seq , err := c.GetAccountSequenceNumber ( senderAddr)
102
+ log. Printf ( " Get current account sequence of sender... " )
103
+ seq , err := c.QueryAccountSequenceNumber (context. TODO (), senderAddr)
104
104
if err != nil {
105
105
log.Fatal (err)
106
106
}
107
+ log.Printf (" ... is %d " , seq)
107
108
108
- // Build a raw transaction
109
- rawTxn , err := types.NewRawP2PTransaction (
110
- senderAddr, recvAddr, seq,
109
+ rawTxn , err := client.NewRawP2PTransaction (
110
+ senderAddr, recvAddr, recvAuthKeyPrefix, seq,
111
111
amountMicro, maxGasAmount, gasUnitPrice, expiration,
112
112
)
113
113
if err != nil {
114
114
log.Fatal (err)
115
115
}
116
116
117
- // Sign and submit transaction
118
- err = c.SubmitRawTransaction (context.TODO (), rawTxn, priKey)
117
+ log. Printf ( " Submit transaction... " )
118
+ expectedSeq , err : = c.SubmitRawTransaction (context.TODO (), rawTxn, priKey)
119
119
if err != nil {
120
120
log.Fatal (err)
121
121
}
122
122
123
- // Wait until transaction is included in ledger, or timeout
124
- err = c.PollSequenceUntil (context.TODO (), senderAddr, seq+ 1 , expiration)
123
+ log. Printf ( " Waiting until transaction is included in ledger... " )
124
+ err = c.PollSequenceUntil (context.TODO (), senderAddr, expectedSeq , expiration)
125
125
if err != nil {
126
126
log.Fatal (err)
127
127
}
128
+ log.Printf (" done." )
128
129
```
129
130
130
131
### Other examples
0 commit comments