Commit a3a612d8 authored by Ubuntu's avatar Ubuntu

add tps

parent 44089981
This diff is collapsed.
This diff is collapsed.
......@@ -3,9 +3,12 @@ package benchmark_test
import (
"fmt"
"math"
"math/big"
"sort"
"testing"
"github.com/ethereum/go-ethereum/crypto"
)
//date && go test -v -run BenchmarkHello -bench=BenchmarkHello -benchtime=3s -benchmem && date
......@@ -18,25 +21,38 @@ func BenchmarkHello(b *testing.B) {
// //b.Logf("begin time: %s \n", time.Now())
// b.ResetTimer()
// for i := 0; i < b.N; i++ {
// //b.Logf("idx %d time: %s \n", i, time.Now())
// fmt.Sprintf("hello")
// }
//b.StopTimer()
//b.Logf("end time: %s \n", time.Now())
local, _ := crypto.HexToECDSA("FD5CC6F5E7E2805E920AC5DC83D5AF1106F9C92F0C04F9D5E1FD4261B4B4464A")
// publicKey := local.Public()
// publicKeyECDSA, _ := publicKey.(*ecdsa.PublicKey)
//fromAddr := crypto.PubkeyToAddress(*publicKeyECDSA)
var compares int64
remote, _ := crypto.GenerateKey()
tx, err := pricedTransaction(crypto.PubkeyToAddress(remote.PublicKey), 0, 100000, big.NewInt(1), local)
if err != nil {
b.Fatal(err)
}
for i := 0; i < b.N; i++ {
s := []int{5, 4, 3, 2, 1}
sort.Slice(s, func(i, j int) bool {
compares++
return s[i] < s[j]
})
//b.Logf("idx %d time: %s \n", i, time.Now())
fmt.Sprintf("%v", tx)
}
//b.StopTimer()
//b.Logf("end time: %s \n", time.Now())
// var compares int64
// for i := 0; i < b.N; i++ {
// s := []int{5, 4, 3, 2, 1}
// sort.Slice(s, func(i, j int) bool {
// compares++
// return s[i] < s[j]
// })
// }
// This metric is per-operation, so divide by b.N and
// report it as a "/op" unit.
b.ReportMetric(float64(compares)/float64(b.N), "compares/op")
// b.ReportMetric(float64(compares)/float64(b.N), "compares/op")
}
func BenchmarkCalculate(b *testing.B) {
......
......@@ -21,57 +21,71 @@
<tbody>
<tr><th><th colspan='2' class='metric'>time/op<th>delta
<tr class='worse'><td>Repeated/input_size_100-8<td>208µs ± 3%<td>213µs ± 3%<td class='delta'>+2.21%<td class='note'>
<tr class='worse'><td>Repeated/input_size_200-8<td>273µs ± 2%<td>280µs ± 6%<td class='delta'>+2.53%<td class='note'>
<tr class='worse'><td>Repeated/input_size_500-8<td>490µs ± 2%<td>513µs ± 2%<td class='delta'>+4.75%<td class='note'>
<tr class='worse'><td>Repeated/input_size_1000-8<td>841µs ± 2%<td>883µs ± 2%<td class='delta'>+5.02%<td class='note'>
<tr class='worse'><td>Repeated/input_size_2000-8<td>1.55ms ± 1%<td>1.64ms ± 2%<td class='delta'>+5.26%<td class='note'>
<tr class='worse'><td>Repeated/input_size_5000-8<td>3.65ms ± 1%<td>3.87ms ± 1%<td class='delta'>+5.83%<td class='note'>
<tr class='worse'><td>Repeated/input_size_10000-8<td>7.05ms ± 1%<td>7.51ms ± 1%<td class='delta'>+6.53%<td class='note'>
<tr class='worse'><td>Repeated/input_size_20000-8<td>13.7ms ± 2%<td>14.5ms ± 1%<td class='delta'>+5.94%<td class='note'>
<tr class='unchanged'><td>[Geo mean]<td>1.38ms <td>1.44ms <td class='delta'>+4.75%<td class='note'>
<tr class='worse'><td>Repeated/input_size_100-8<td>211µs ± 4%<td>214µs ± 5%<td class='delta'>+1.35%<td class='note'>
<tr class='worse'><td>Repeated/input_size_200-8<td>284µs ± 3%<td>284µs ± 4%<td class='delta'>+0.15%<td class='note'>
<tr class='worse'><td>Repeated/input_size_500-8<td>521µs ± 3%<td>524µs ± 4%<td class='delta'>+0.48%<td class='note'>
<tr class='worse'><td>Repeated/input_size_1000-8<td>1.00ms ±11%<td>1.04ms ± 4%<td class='delta'>+3.93%<td class='note'>
<tr class='worse'><td>Repeated/input_size_2000-8<td>1.78ms ±14%<td>1.95ms ± 2%<td class='delta'>+9.25%<td class='note'>
<tr class='worse'><td>Repeated/input_size_5000-8<td>3.99ms ± 3%<td>4.58ms ± 2%<td class='delta'>+14.91%<td class='note'>
<tr class='worse'><td>Repeated/input_size_10000-8<td>7.72ms ± 2%<td>8.86ms ± 3%<td class='delta'>+14.69%<td class='note'>
<tr class='worse'><td>Repeated/input_size_20000-8<td>14.9ms ± 4%<td>17.0ms ± 2%<td class='delta'>+13.45%<td class='note'>
<tr class='unchanged'><td>[Geo mean]<td>1.50ms <td>1.61ms <td class='delta'>+7.10%<td class='note'>
<tr><td>&nbsp;
</tbody>
<tbody>
<tr><th><th colspan='2' class='metric'>speed<th>delta
<tr class='worse'><td>Repeated/input_size_100-8<td>42.3MB/s ± 3%<td>41.4MB/s ± 3%<td class='delta'>−2.15%<td class='note'>
<tr class='worse'><td>Repeated/input_size_200-8<td>64.5MB/s ± 2%<td>62.9MB/s ± 5%<td class='delta'>−2.41%<td class='note'>
<tr class='worse'><td>Repeated/input_size_500-8<td>89.8MB/s ± 2%<td>85.7MB/s ± 2%<td class='delta'>−4.54%<td class='note'>
<tr class='worse'><td>Repeated/input_size_1000-8<td>105MB/s ± 2%<td>100MB/s ± 2%<td class='delta'>−4.79%<td class='note'>
<tr class='worse'><td>Repeated/input_size_2000-8<td>113MB/s ± 1%<td>108MB/s ± 2%<td class='delta'>−4.99%<td class='note'>
<tr class='worse'><td>Repeated/input_size_5000-8<td>120MB/s ± 1%<td>114MB/s ± 1%<td class='delta'>−5.51%<td class='note'>
<tr class='worse'><td>Repeated/input_size_10000-8<td>125MB/s ± 1%<td>117MB/s ± 1%<td class='delta'>−6.13%<td class='note'>
<tr class='worse'><td>Repeated/input_size_20000-8<td>129MB/s ± 2%<td>122MB/s ± 1%<td class='delta'>−5.62%<td class='note'>
<tr class='unchanged'><td>[Geo mean]<td>93.1MB/s <td>88.9MB/s <td class='delta'>−4.53%<td class='note'>
<tr class='worse'><td>Repeated/input_size_100-8<td>64.2MB/s ± 4%<td>63.3MB/s ± 5%<td class='delta'>−1.31%<td class='note'>
<tr class='worse'><td>Repeated/input_size_200-8<td>95.3MB/s ± 3%<td>95.2MB/s ± 4%<td class='delta'>−0.15%<td class='note'>
<tr class='worse'><td>Repeated/input_size_500-8<td>130MB/s ± 3%<td>129MB/s ± 3%<td class='delta'>−0.45%<td class='note'>
<tr class='worse'><td>Repeated/input_size_1000-8<td>136MB/s ±12%<td>130MB/s ± 4%<td class='delta'>−4.15%<td class='note'>
<tr class='worse'><td>Repeated/input_size_2000-8<td>153MB/s ±13%<td>139MB/s ± 2%<td class='delta'>−8.97%<td class='note'>
<tr class='worse'><td>Repeated/input_size_5000-8<td>169MB/s ± 2%<td>147MB/s ± 3%<td class='delta'>−13.15%<td class='note'>
<tr class='worse'><td>Repeated/input_size_10000-8<td>175MB/s ± 4%<td>152MB/s ± 3%<td class='delta'>−12.70%<td class='note'>
<tr class='worse'><td>Repeated/input_size_20000-8<td>179MB/s ±10%<td>159MB/s ± 2%<td class='delta'>−11.06%<td class='note'>
<tr class='unchanged'><td>[Geo mean]<td>131MB/s <td>122MB/s <td class='delta'>−6.64%<td class='note'>
<tr><td>&nbsp;
</tbody>
<tbody>
<tr><th><th colspan='2' class='metric'>tps<th>delta
<tr class='better'><td>Repeated/input_size_100-8<td>4.74k ± 4%<td>4.68k ± 5%<td class='delta'>−1.32%<td class='note'>
<tr class='better'><td>Repeated/input_size_200-8<td>3.52k ± 3%<td>3.52k ± 4%<td class='delta'>−0.15%<td class='note'>
<tr class='better'><td>Repeated/input_size_500-8<td>1.92k ± 3%<td>1.91k ± 3%<td class='delta'>−0.48%<td class='note'>
<tr class='better'><td>Repeated/input_size_1000-8<td>1.00k ±12%<td>0.96k ± 4%<td class='delta'>−4.15%<td class='note'>
<tr class='better'><td>Repeated/input_size_2000-8<td>565 ±13%<td>514 ± 2%<td class='delta'>−8.97%<td class='note'>
<tr class='better'><td>Repeated/input_size_5000-8<td>251 ± 2%<td>218 ± 3%<td class='delta'>−13.15%<td class='note'>
<tr class='better'><td>Repeated/input_size_10000-8<td>129 ± 4%<td>113 ± 3%<td class='delta'>−12.69%<td class='note'>
<tr class='better'><td>Repeated/input_size_20000-8<td>66.4 ±10%<td>59.0 ± 2%<td class='delta'>−11.09%<td class='note'>
<tr class='unchanged'><td>[Geo mean]<td>667 <td>623 <td class='delta'>−6.64%<td class='note'>
<tr><td>&nbsp;
</tbody>
<tbody>
<tr><th><th colspan='2' class='metric'>alloc/op<th>delta
<tr class='worse'><td>Repeated/input_size_100-8<td>226kB ± 0%<td>240kB ± 0%<td class='delta'>+6.07%<td class='note'>
<tr class='worse'><td>Repeated/input_size_200-8<td>310kB ± 0%<td>337kB ± 0%<td class='delta'>+8.84%<td class='note'>
<tr class='worse'><td>Repeated/input_size_500-8<td>554kB ± 0%<td>627kB ± 0%<td class='delta'>+13.35%<td class='note'>
<tr class='worse'><td>Repeated/input_size_1000-8<td>947kB ± 0%<td>1087kB ± 0%<td class='delta'>+14.72%<td class='note'>
<tr class='worse'><td>Repeated/input_size_2000-8<td>1.74MB ± 0%<td>2.01MB ± 0%<td class='delta'>+15.59%<td class='note'>
<tr class='worse'><td>Repeated/input_size_5000-8<td>4.11MB ± 0%<td>4.80MB ± 0%<td class='delta'>+16.54%<td class='note'>
<tr class='worse'><td>Repeated/input_size_10000-8<td>8.07MB ± 0%<td>9.42MB ± 0%<td class='delta'>+16.76%<td class='note'>
<tr class='worse'><td>Repeated/input_size_20000-8<td>16.0MB ± 0%<td>18.7MB ± 0%<td class='delta'>+16.92%<td class='note'>
<tr class='unchanged'><td>[Geo mean]<td>1.55MB <td>1.76MB <td class='delta'>+13.53%<td class='note'>
<tr class='worse'><td>Repeated/input_size_100-8<td>254kB ± 0%<td>254kB ± 0%<td class='delta'>+0.00%<td class='note'>
<tr class='worse'><td>Repeated/input_size_200-8<td>365kB ± 0%<td>365kB ± 0%<td class='delta'>+0.00%<td class='note'>
<tr class='worse'><td>Repeated/input_size_500-8<td>702kB ± 0%<td>702kB ± 0%<td class='delta'>+0.00%<td class='note'>
<tr class='better'><td>Repeated/input_size_1000-8<td>1.23MB ± 0%<td>1.23MB ± 0%<td class='delta'>−0.00%<td class='note'>
<tr class='worse'><td>Repeated/input_size_2000-8<td>2.28MB ± 0%<td>2.28MB ± 0%<td class='delta'>+0.00%<td class='note'>
<tr class='worse'><td>Repeated/input_size_5000-8<td>5.48MB ± 0%<td>5.48MB ± 0%<td class='delta'>+0.00%<td class='note'>
<tr class='worse'><td>Repeated/input_size_10000-8<td>10.8MB ± 0%<td>10.8MB ± 0%<td class='delta'>+0.00%<td class='note'>
<tr class='worse'><td>Repeated/input_size_20000-8<td>21.4MB ± 0%<td>21.4MB ± 0%<td class='delta'>+0.00%<td class='note'>
<tr class='unchanged'><td>[Geo mean]<td>1.97MB <td>1.97MB <td class='delta'>+0.00%<td class='note'>
<tr><td>&nbsp;
</tbody>
<tbody>
<tr><th><th colspan='2' class='metric'>allocs/op<th>delta
<tr class='worse'><td>Repeated/input_size_100-8<td>2.11k ± 0%<td>2.11k ± 0%<td class='delta'>+0.11%<td class='note'>
<tr class='worse'><td>Repeated/input_size_200-8<td>3.61k ± 0%<td>3.61k ± 0%<td class='delta'>+0.08%<td class='note'>
<tr class='worse'><td>Repeated/input_size_500-8<td>8.13k ± 0%<td>8.13k ± 0%<td class='delta'>+0.05%<td class='note'>
<tr class='worse'><td>Repeated/input_size_1000-8<td>15.6k ± 0%<td>15.6k ± 0%<td class='delta'>+0.03%<td class='note'>
<tr class='worse'><td>Repeated/input_size_2000-8<td>30.7k ± 0%<td>30.7k ± 0%<td class='delta'>+0.01%<td class='note'>
<tr class='worse'><td>Repeated/input_size_5000-8<td>75.7k ± 0%<td>75.7k ± 0%<td class='delta'>+0.01%<td class='note'>
<tr class='unchanged'><td>Repeated/input_size_100-8<td>2.12k ± 0%<td>2.12k ± 0%<td class='delta'>0.00%<td class='note'>
<tr class='unchanged'><td>Repeated/input_size_200-8<td>3.62k ± 0%<td>3.62k ± 0%<td class='delta'>0.00%<td class='note'>
<tr class='unchanged'><td>Repeated/input_size_500-8<td>8.14k ± 0%<td>8.14k ± 0%<td class='delta'>0.00%<td class='note'>
<tr class='better'><td>Repeated/input_size_1000-8<td>15.6k ± 0%<td>15.6k ± 0%<td class='delta'>−0.00%<td class='note'>
<tr class='better'><td>Repeated/input_size_2000-8<td>30.7k ± 0%<td>30.7k ± 0%<td class='delta'>−0.00%<td class='note'>
<tr class='worse'><td>Repeated/input_size_5000-8<td>75.7k ± 0%<td>75.7k ± 0%<td class='delta'>+0.00%<td class='note'>
<tr class='worse'><td>Repeated/input_size_10000-8<td>151k ± 0%<td>151k ± 0%<td class='delta'>+0.00%<td class='note'>
<tr class='worse'><td>Repeated/input_size_20000-8<td>301k ± 0%<td>301k ± 0%<td class='delta'>+0.00%<td class='note'>
<tr class='unchanged'><td>[Geo mean]<td>23.8k <td>23.8k <td class='delta'>+0.04%<td class='note'>
<tr class='unchanged'><td>[Geo mean]<td>23.8k <td>23.8k <td class='delta'>+0.00%<td class='note'>
<tr><td>&nbsp;
</tbody>
......
......@@ -4,6 +4,7 @@ import (
"context"
"crypto/ecdsa"
"fmt"
"testing"
"time"
......@@ -14,6 +15,10 @@ import (
"github.com/ethereum/go-ethereum/crypto"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
//"google.golang.org/grpc/encoding/proto"
//"github.com/protocolbuffers/protobuf-go/proto"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/anypb"
)
......@@ -56,6 +61,7 @@ func RepeatedEthTx(txl int, b *testing.B) {
b.Fatal(err)
}
beginTime := time.Now()
b.ResetTimer()
b.RunParallel(func(pb *testing.PB) {
......@@ -100,9 +106,17 @@ func RepeatedEthTx(txl int, b *testing.B) {
txs = append(txs, &base.TransactionEth{Tx: &base.EthTx{Inner: &inner}})
}
b.SetBytes(88 * int64(txl))
req := &base.RepeatedEthTx{Txs: txs}
res, err := c.SendRepeatedEthTx(ctx, &base.RepeatedEthTx{Txs: txs})
out, err := proto.Marshal(req)
if err != nil {
b.Fatal(err)
}
b.SetBytes(int64(len(out)))
res, err := c.SendRepeatedEthTx(ctx, req)
if err != nil {
b.Fatal(err)
......@@ -119,6 +133,8 @@ func RepeatedEthTx(txl int, b *testing.B) {
// })
}
})
b.ReportMetric(float64(b.N)/float64(time.Since(beginTime).Seconds()), "tps")
}
func RepeatedTxEthAsAny(txl int, b *testing.B) {
......@@ -140,6 +156,8 @@ func RepeatedTxEthAsAny(txl int, b *testing.B) {
//}
// once.Do(onceFunc)
beginTime := time.Now()
b.ResetTimer()
// The loop body is executed b.N times total across all goroutines.
......@@ -185,14 +203,22 @@ func RepeatedTxEthAsAny(txl int, b *testing.B) {
txs = append(txs, &base.TransactionEth{Tx: &base.EthTx{Inner: &inner}})
}
b.SetBytes(88 * int64(txl))
ethTxAsAny, err := anypb.New(&base.RepeatedEthTx{Txs: txs})
if err != nil {
b.Fatal(err)
}
res, err := c.SendTxAsAny(ctx, &base.Transaction{Tx: ethTxAsAny})
req := &base.Transaction{Tx: ethTxAsAny}
out, err := proto.Marshal(req)
if err != nil {
b.Fatal(err)
}
b.SetBytes(int64(len(out)))
res, err := c.SendTxAsAny(ctx, req)
if err != nil {
b.Fatal(err)
......@@ -210,6 +236,9 @@ func RepeatedTxEthAsAny(txl int, b *testing.B) {
}
})
b.ReportMetric(float64(b.N)/float64(time.Since(beginTime).Seconds()), "tps")
}
// go test -v -run BenchmarkAnyTxEth -bench BenchmarkRepeated -benchmem -count 5 | tee old.txt
......@@ -228,10 +257,11 @@ benchstat -geomean -delta-test none -html RepeatedEthTx.txt RepeatedTxEthAsAny.t
func BenchmarkRepeated(b *testing.B) {
for _, v := range tableTx {
b.Run(fmt.Sprintf("input_size_%d", v.input), func(b *testing.B) {
//go test -v -run BenchmarkAnyTxEth -bench BenchmarkRepeated -benchmem -count 10 | tee RepeatedEthTx.txt
//go test -v -run BenchmarkAnyTxEth -bench BenchmarkRepeated -benchmem -count 30 | tee RepeatedEthTx.txt
//RepeatedEthTx(v.input, b)
//go test -v -run BenchmarkAnyTxEth -bench BenchmarkRepeated -benchmem -count 10 | tee RepeatedTxEthAsAny.txt
//go test -v -run BenchmarkAnyTxEth -bench BenchmarkRepeated -benchmem -count 30 | tee RepeatedTxEthAsAny.txt
RepeatedTxEthAsAny(v.input, b)
})
}
}
......
package benchmark_test
import (
"bytes"
"context"
"crypto/ecdsa"
"encoding/gob"
"errors"
"fmt"
"time"
......@@ -14,6 +16,7 @@ import (
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/anypb"
"google.golang.org/protobuf/types/known/emptypb"
......@@ -311,9 +314,9 @@ func TestAnyTx(t *testing.T) {
func TestSizeOf(t *testing.T) {
local, _ := crypto.HexToECDSA("FD5CC6F5E7E2805E920AC5DC83D5AF1106F9C92F0C04F9D5E1FD4261B4B4464A")
//publicKey := local.Public()
//publicKeyECDSA, _ := publicKey.(*ecdsa.PublicKey)
//fromAddr := crypto.PubkeyToAddress(*publicKeyECDSA)
publicKey := local.Public()
publicKeyECDSA, _ := publicKey.(*ecdsa.PublicKey)
fromAddr := crypto.PubkeyToAddress(*publicKeyECDSA)
remote, _ := crypto.GenerateKey()
......@@ -323,8 +326,79 @@ func TestSizeOf(t *testing.T) {
t.Fatal(err)
}
fmt.Printf("%T \n", unsafe.Sizeof(*tx))
inner := base.EthTxData{
AccountNonce: tx.Nonce(),
Price: tx.GasPrice().Bytes(),
GasLimit: tx.Gas(),
Payload: tx.Data(),
}
v, r, sigs := tx.RawSignatureValues()
inner.V = v.Bytes()
inner.R = r.Bytes()
inner.S = sigs.Bytes()
inner.Amount = tx.Value().Bytes()
fmt.Println(unsafe.Sizeof(*tx))
addr := base.Address{Address: tx.To().Bytes()}
inner.Recipient = &addr
inner.From = fromAddr.Bytes()
out, err := proto.Marshal(&base.TransactionEth{Tx: &base.EthTx{Inner: &inner}})
if err != nil {
t.Fatal(err)
}
fmt.Printf("TransactionEth proto buff encoding: %d \n", len(out))
//fmt.Printf("%T \n", unsafe.Sizeof(tx.Nonce()))
sss, err := getRealSizeOf(tx)
if err != nil {
t.Fatal(err)
}
fmt.Println("getRealSizeOf tx ", sss)
ssss, err := getRealSizeOf(base.TransactionEth{Tx: &base.EthTx{Inner: &inner}})
if err != nil {
t.Fatal(err)
}
fmt.Println("getRealSizeOf TransactionEth", ssss)
fmt.Println("unsafe.Sizeof", unsafe.Sizeof(*tx))
fmt.Println("unsafe.Sizeof v", unsafe.Sizeof(*v))
fmt.Println("unsafe.Sizeof r", unsafe.Sizeof(*r))
fmt.Println("unsafe.Sizeof sigs", unsafe.Sizeof(*sigs))
fmt.Println("tx size", tx.Size())
// v, r, sigs
}
// type ASDF struct {
// A uint64
// B uint64
// C uint64
// D uint64
// E uint64
// F string
// }
// func (s *ASDF) size() int {
// size := int(unsafe.Sizeof(*s))
// size += len(s.F)
// return size
// }
func getRealSizeOf(v interface{}) (int, error) {
b := new(bytes.Buffer)
if err := gob.NewEncoder(b).Encode(v); err != nil {
return 0, err
}
return b.Len(), nil
}
This diff is collapsed.
This diff is collapsed.
......@@ -4,7 +4,7 @@ go 1.18
require (
github.com/ethereum/go-ethereum v1.10.26
google.golang.org/grpc v1.50.1
google.golang.org/grpc v1.51.0
google.golang.org/protobuf v1.28.1
)
......@@ -15,11 +15,11 @@ require (
github.com/golang/protobuf v1.5.2 // indirect
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
golang.org/x/net v0.2.0 // indirect
golang.org/x/sys v0.2.0 // indirect
golang.org/x/text v0.4.0 // indirect
golang.org/x/net v0.3.0 // indirect
golang.org/x/sys v0.3.0 // indirect
golang.org/x/text v0.5.0 // indirect
golang.org/x/tools v0.1.12 // indirect
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 // indirect
google.golang.org/genproto v0.0.0-20221205194025-8222ab48f5fc // indirect
google.golang.org/grpc/examples v0.0.0-20221202020918-001d234e1f2d // indirect
)
......@@ -75,6 +75,8 @@ golang.org/x/net v0.0.0-20220607020251-c690dde0001d h1:4SFsTMi4UahlKoloni7L4eYzh
golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.3.0 h1:VWL6FNY2bEEmsGVKabSlHu5Irp34xmMRoqb/9lF9lxk=
golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
......@@ -90,6 +92,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbuf
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
......@@ -97,6 +101,8 @@ golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
......@@ -122,11 +128,15 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaR
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 h1:a2S6M0+660BgMNl++4JPlcAO/CjkqYItDEZwkoDQK7c=
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
google.golang.org/genproto v0.0.0-20221205194025-8222ab48f5fc h1:nUKKji0AarrQKh6XpFEpG3p1TNztxhe7C8TcUvDgXqw=
google.golang.org/genproto v0.0.0-20221205194025-8222ab48f5fc/go.mod h1:1dOng4TWOomJrDGhpXjfCD35wQC6jnC7HpRmOFRqEV0=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY=
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.51.0 h1:E1eGv1FTqoLIdnBCZufiSHgKjlqG6fKFf6pPWtMTh8U=
google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww=
google.golang.org/grpc/examples v0.0.0-20221202020918-001d234e1f2d h1:IbYdIWUmlXSfKNxxWYJLWpwekZh/7ZvFdmbAcSo8ygA=
google.golang.org/grpc/examples v0.0.0-20221202020918-001d234e1f2d/go.mod h1:jMMKnsR3nPEOSsgT/Le2GxpknJOBOQms0nWb0JRgeUM=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment