feat(config): add rbft config into order.toml
This commit is contained in:
parent
876bad5aa2
commit
9b3d232a00
|
@ -64,7 +64,7 @@ func start(ctx *cli.Context) error {
|
|||
if repo.Config.PProf.Enable {
|
||||
switch repo.Config.PProf.PType {
|
||||
case "runtime":
|
||||
go runtimePProf(repo.Config.PProf.Mode, repo.NetworkConfig.ID, repo.Config.PProf.Duration)
|
||||
go runtimePProf(repo.Config.RepoRoot, repo.Config.PProf.Mode, repo.NetworkConfig.ID, repo.Config.PProf.Duration)
|
||||
case "http":
|
||||
httpPProf(repo.Config.Port.PProf)
|
||||
}
|
||||
|
@ -143,20 +143,22 @@ func handleShutdown(node *app.BitXHub, wg *sync.WaitGroup) {
|
|||
}
|
||||
|
||||
// runtimePProf will record the cpu or memory profiles every 5 second.
|
||||
func runtimePProf(mode string, id uint64, duration time.Duration) {
|
||||
func runtimePProf(repoRoot, mode string, id uint64, duration time.Duration) {
|
||||
tick := time.NewTicker(duration)
|
||||
rootPath := fmt.Sprint("./scripts/build/", "node", id, "/pprof/")
|
||||
rootPath := filepath.Join(repoRoot,"/pprof/")
|
||||
exist := fileExist(rootPath)
|
||||
if !exist {
|
||||
err := os.Mkdir(rootPath, os.ModePerm)
|
||||
if err != nil {
|
||||
fmt.Printf("----- runtimePProf start failed, err: %s -----\n", err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
var cpuFile *os.File
|
||||
if mode == "cpu" {
|
||||
cpuPath := fmt.Sprint(rootPath,"cpu-", time.Now().Format("20060102-15:04:05"))
|
||||
subPath := fmt.Sprint("cpu-", time.Now().Format("20060102-15:04:05"))
|
||||
cpuPath := filepath.Join(rootPath,subPath)
|
||||
cpuFile, _ = os.Create(cpuPath)
|
||||
_ = pprof.StartCPUProfile(cpuFile)
|
||||
}
|
||||
|
@ -167,15 +169,18 @@ func runtimePProf(mode string, id uint64, duration time.Duration) {
|
|||
case "cpu":
|
||||
pprof.StopCPUProfile()
|
||||
_ = cpuFile.Close()
|
||||
cpuPath := fmt.Sprint(rootPath,"cpu-", time.Now().Format("20060102-15:04:05"))
|
||||
subPath := fmt.Sprint("cpu-", time.Now().Format("20060102-15:04:05"))
|
||||
cpuPath := filepath.Join(rootPath, subPath)
|
||||
cpuFile, _ := os.Create(cpuPath)
|
||||
_ = pprof.StartCPUProfile(cpuFile)
|
||||
case "memory":
|
||||
memPath := fmt.Sprint(rootPath,"mem-", time.Now().Format("20060102-15:04:05"))
|
||||
subPath := fmt.Sprint("mem-", time.Now().Format("20060102-15:04:05"))
|
||||
memPath := filepath.Join(rootPath, subPath)
|
||||
memFile, _ := os.Create(memPath)
|
||||
_ = pprof.WriteHeapProfile(memFile)
|
||||
_ = memFile.Close()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ solo = false
|
|||
enable = true
|
||||
ptype = "http" # including two types: runtime (recommended for use during the development phase) and http
|
||||
mode = "memory" # only required for runtime ptype, including two modes: cpu、memory
|
||||
duration = "5s" # only required for runtime ptype, every duration will generation a profile.
|
||||
duration = "1m" # only required for runtime ptype, every duration will generation a profile.
|
||||
|
||||
[monitor]
|
||||
enable = true
|
||||
|
|
|
@ -17,3 +17,22 @@ disable_proposal_forwarding = true # This prevents blocks from being accidentall
|
|||
tx_slice_timeout = "0.1s" # Node broadcasts transactions if there are cached transactions, although set_size isn't reached yet
|
||||
fetch_timeout = "3s" # How long to wait before fetching missing transactions finished
|
||||
|
||||
[rbft] #RBFT configurations
|
||||
set_size = 100 # How many transactions should the node broadcast at once
|
||||
batch_size = 500 # How many transactions should the primary pack before sending pre-prepare
|
||||
pool_size = 50000 # How many transactions could the txPool stores in total
|
||||
vc_resend_limit = 10 # How many times of same vc from self before a replica start recovery
|
||||
vc_period = 0 # After how many checkpoint periods( Blocks = 10 * vcperiod ) the primary gets cycled automatically. ( Set 0 to disable )
|
||||
[rbft.timeout]
|
||||
nego_view = "6s" # How long to wait for N-f responses after send negotiate view
|
||||
recovery = "15s" # How long to wait before recovery finished(This is for release1.2)
|
||||
first_request = "30s" # How long to wait before first request should come
|
||||
batch = "0.5s"# Primary send a pre-prepare if there are pending requests, although batchsize isn't reached yet,
|
||||
request = "6s" # How long may a request(transaction batch) take between reception and execution, must be greater than the batch timeout
|
||||
validate = "1s" # How long may a validate (transaction batch) process will take by local Validation
|
||||
null_request = "6s" # Primary send it to inform aliveness, must be greater than request timeout
|
||||
viewchange = "8s" # How long may a view change take
|
||||
resend_viewchange= "10s" # How long to wait for a view change quorum before resending (the same) view change
|
||||
clean_viewchange = "60s" # How long to clean out-of-data view change message
|
||||
update = "4s" # How long may a update-n take
|
||||
set = "0.1s" # Node broadcasts transactions if there are cached transactions, although set_size isn't reached yet,
|
||||
|
|
2
go.mod
2
go.mod
|
@ -10,9 +10,7 @@ require (
|
|||
github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect
|
||||
github.com/ethereum/go-ethereum v1.9.18
|
||||
github.com/fatih/color v1.7.0 // indirect
|
||||
github.com/go-playground/assert/v2 v2.0.1
|
||||
github.com/gobuffalo/envy v1.9.0 // indirect
|
||||
github.com/gobuffalo/logger v1.0.0
|
||||
github.com/gobuffalo/packd v1.0.0
|
||||
github.com/gobuffalo/packr v1.30.1
|
||||
github.com/gogo/protobuf v1.3.1
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
-----BEGIN EC PRIVATE KEY-----
|
||||
tkdxQ+F/iJJjBE9s9GPcNxd6xFJsTDmno0QZhFcCSi8=
|
||||
halN1RQDWQ1PFJ+SMLb13joI5YiZ3K8Pd3aO+xgl6FQ=
|
||||
-----END EC PRIVATE KEY-----
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICWjCCAf+gAwIBAgIDDhFLMAoGCCqGSM49BAMCMIGaMQswCQYDVQQGEwJDTjER
|
||||
MIICWTCCAf+gAwIBAgIDCUHDMAoGCCqGSM49BAMCMIGaMQswCQYDVQQGEwJDTjER
|
||||
MA8GA1UECBMIWmhlSmlhbmcxETAPBgNVBAcTCEhhbmdaaG91MR8wDQYDVQQJEwZz
|
||||
dHJlZXQwDgYDVQQJEwdhZGRyZXNzMQ8wDQYDVQQREwYzMjQwMDAxDzANBgNVBAoT
|
||||
BkFnZW5jeTEQMA4GA1UECxMHQml0WEh1YjEQMA4GA1UEAxMHQml0WEh1YjAgFw0y
|
||||
MDA4MTEwNTA3MTNaGA8yMDcwMDczMDA1MDcxM1owgZkxCzAJBgNVBAYTAkNOMREw
|
||||
MDA4MTEwNTA3MTRaGA8yMDcwMDczMDA1MDcxNFowgZkxCzAJBgNVBAYTAkNOMREw
|
||||
DwYDVQQIEwhaaGVKaWFuZzERMA8GA1UEBxMISGFuZ1pob3UxHzANBgNVBAkTBnN0
|
||||
cmVldDAOBgNVBAkTB2FkZHJlc3MxDzANBgNVBBETBjMyNDAwMDEOMAwGA1UEChMF
|
||||
Tm9kZTExEDAOBgNVBAsTB0JpdFhIdWIxEDAOBgNVBAMTB0JpdFhIdWIwWTATBgcq
|
||||
hkjOPQIBBggqhkjOPQMBBwNCAATgjTYEnavxerFuEKJ8C39QUY12xh/TC2E5V7ni
|
||||
nmQcOgDDRv5HW4sskTSm/WX2D0BMzwb7XE5ATyoDeM9qcurDozEwLzAOBgNVHQ8B
|
||||
Tm9kZTMxEDAOBgNVBAsTB0JpdFhIdWIxEDAOBgNVBAMTB0JpdFhIdWIwWTATBgcq
|
||||
hkjOPQIBBggqhkjOPQMBBwNCAAQ9IPBBKkqSwWkwDdK+ARw2qlBmBD9bF8HJ0z3P
|
||||
XeKaTmnnEBJu1e0vjHl+uQGBz5x1ulBRVeq4xhmkZtPZByO+ozEwLzAOBgNVHQ8B
|
||||
Af8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAMBgNVHRMBAf8EAjAAMAoGCCqGSM49
|
||||
BAMCA0kAMEYCIQD5Oz1xJvFgzYm/lTzoaO/i0ayPVRgSdBwvK6hEICo5lAIhAMtG
|
||||
aswjd2wVA4zB5GPEmJ/tvPUnxrlOAU67AQMYR4zf
|
||||
BAMCA0gAMEUCIQCMgYSwQ9go1jjAcC4SxpJl4moA8Ba/GEb0qwFPaNmSCwIgDEOo
|
||||
UpUSNYEQJvahR4BxxVLOBf/CNlKhAGBVNKTccxk=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHcCAQEEIJjph6szT64kRmvzyZYWYaonaFVsvTZwRLqeV20wo2D3oAoGCCqGSM49
|
||||
AwEHoUQDQgAE4I02BJ2r8XqxbhCifAt/UFGNdsYf0wthOVe54p5kHDoAw0b+R1uL
|
||||
LJE0pv1l9g9ATM8G+1xOQE8qA3jPanLqww==
|
||||
MHcCAQEEIMQcu7NXkY6TE+7xNTSo8CTKG4Tp20CcWAAEVtRQAjlioAoGCCqGSM49
|
||||
AwEHoUQDQgAEPSDwQSpKksFpMA3SvgEcNqpQZgQ/WxfBydM9z13imk5p5xASbtXt
|
||||
L4x5frkBgc+cdbpQUVXquMYZpGbT2Qcjvg==
|
||||
-----END EC PRIVATE KEY-----
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
-----BEGIN EC PRIVATE KEY-----
|
||||
BcNwjTDCxyxLNjFKQfMAc6sY6iJs+Ma59WZyC/4uhjE=
|
||||
cu/PS7DoowDT5H5qEPYwvNVA3pM/Ae1TgIl/xeENyV0=
|
||||
-----END EC PRIVATE KEY-----
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICWjCCAf+gAwIBAgIDC8pcMAoGCCqGSM49BAMCMIGaMQswCQYDVQQGEwJDTjER
|
||||
MIICWTCCAf+gAwIBAgIDCGR3MAoGCCqGSM49BAMCMIGaMQswCQYDVQQGEwJDTjER
|
||||
MA8GA1UECBMIWmhlSmlhbmcxETAPBgNVBAcTCEhhbmdaaG91MR8wDQYDVQQJEwZz
|
||||
dHJlZXQwDgYDVQQJEwdhZGRyZXNzMQ8wDQYDVQQREwYzMjQwMDAxDzANBgNVBAoT
|
||||
BkFnZW5jeTEQMA4GA1UECxMHQml0WEh1YjEQMA4GA1UEAxMHQml0WEh1YjAgFw0y
|
||||
MDA4MTEwNTA3MTNaGA8yMDcwMDczMDA1MDcxM1owgZkxCzAJBgNVBAYTAkNOMREw
|
||||
MDA4MTEwNTA3MTRaGA8yMDcwMDczMDA1MDcxNFowgZkxCzAJBgNVBAYTAkNOMREw
|
||||
DwYDVQQIEwhaaGVKaWFuZzERMA8GA1UEBxMISGFuZ1pob3UxHzANBgNVBAkTBnN0
|
||||
cmVldDAOBgNVBAkTB2FkZHJlc3MxDzANBgNVBBETBjMyNDAwMDEOMAwGA1UEChMF
|
||||
Tm9kZTIxEDAOBgNVBAsTB0JpdFhIdWIxEDAOBgNVBAMTB0JpdFhIdWIwWTATBgcq
|
||||
hkjOPQIBBggqhkjOPQMBBwNCAARhGDBod719hBcz/lpLtEh8GsqzDhm1ZbjdaTsM
|
||||
GivsjOHRk9iEkwDtXmsMvYn3yOIq2RR60T7/G2swBzuZiZWxozEwLzAOBgNVHQ8B
|
||||
Tm9kZTQxEDAOBgNVBAsTB0JpdFhIdWIxEDAOBgNVBAMTB0JpdFhIdWIwWTATBgcq
|
||||
hkjOPQIBBggqhkjOPQMBBwNCAARN1y/FhZpSg1kpXF38szDNRXdPkqoc8oRKdGzv
|
||||
3HdhtBdUO7jXe2xNaWVtNMGXVo+NuBi5t9qEoo+euxfnjlc9ozEwLzAOBgNVHQ8B
|
||||
Af8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAMBgNVHRMBAf8EAjAAMAoGCCqGSM49
|
||||
BAMCA0kAMEYCIQDrX3znEJ6zkhUhPN37LY5eurrCs7Brp/TQ/2geHdZLQAIhALxb
|
||||
Gk39mUrJ/4z/dVGwFYccWZB8UOV1M4iuN6ypF+Sc
|
||||
BAMCA0gAMEUCIQCbsG7E158uzqYCzrrnrr2Xsnz7f5cFA2o4SXAF7R/IyAIgSxYS
|
||||
MGj0g0OBcxJqwTyyvF2FFOhlWjF9nq2eYK/rlzI=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHcCAQEEICI2QiahAMKtO9tD9VnxZ2J3jvFt+/vTAtcAQzUcIPoXoAoGCCqGSM49
|
||||
AwEHoUQDQgAEYRgwaHe9fYQXM/5aS7RIfBrKsw4ZtWW43Wk7DBor7Izh0ZPYhJMA
|
||||
7V5rDL2J98jiKtkUetE+/xtrMAc7mYmVsQ==
|
||||
MHcCAQEEIFWx/9axMGfzqOO/T3OEBXZNli6dkX/9m+o1GjnEX+I1oAoGCCqGSM49
|
||||
AwEHoUQDQgAETdcvxYWaUoNZKVxd/LMwzUV3T5KqHPKESnRs79x3YbQXVDu413ts
|
||||
TWllbTTBl1aPjbgYubfahKKPnrsX545XPQ==
|
||||
-----END EC PRIVATE KEY-----
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
-----BEGIN EC PRIVATE KEY-----
|
||||
halN1RQDWQ1PFJ+SMLb13joI5YiZ3K8Pd3aO+xgl6FQ=
|
||||
tkdxQ+F/iJJjBE9s9GPcNxd6xFJsTDmno0QZhFcCSi8=
|
||||
-----END EC PRIVATE KEY-----
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICWTCCAf+gAwIBAgIDCUHDMAoGCCqGSM49BAMCMIGaMQswCQYDVQQGEwJDTjER
|
||||
MIICWjCCAf+gAwIBAgIDDhFLMAoGCCqGSM49BAMCMIGaMQswCQYDVQQGEwJDTjER
|
||||
MA8GA1UECBMIWmhlSmlhbmcxETAPBgNVBAcTCEhhbmdaaG91MR8wDQYDVQQJEwZz
|
||||
dHJlZXQwDgYDVQQJEwdhZGRyZXNzMQ8wDQYDVQQREwYzMjQwMDAxDzANBgNVBAoT
|
||||
BkFnZW5jeTEQMA4GA1UECxMHQml0WEh1YjEQMA4GA1UEAxMHQml0WEh1YjAgFw0y
|
||||
MDA4MTEwNTA3MTRaGA8yMDcwMDczMDA1MDcxNFowgZkxCzAJBgNVBAYTAkNOMREw
|
||||
MDA4MTEwNTA3MTNaGA8yMDcwMDczMDA1MDcxM1owgZkxCzAJBgNVBAYTAkNOMREw
|
||||
DwYDVQQIEwhaaGVKaWFuZzERMA8GA1UEBxMISGFuZ1pob3UxHzANBgNVBAkTBnN0
|
||||
cmVldDAOBgNVBAkTB2FkZHJlc3MxDzANBgNVBBETBjMyNDAwMDEOMAwGA1UEChMF
|
||||
Tm9kZTMxEDAOBgNVBAsTB0JpdFhIdWIxEDAOBgNVBAMTB0JpdFhIdWIwWTATBgcq
|
||||
hkjOPQIBBggqhkjOPQMBBwNCAAQ9IPBBKkqSwWkwDdK+ARw2qlBmBD9bF8HJ0z3P
|
||||
XeKaTmnnEBJu1e0vjHl+uQGBz5x1ulBRVeq4xhmkZtPZByO+ozEwLzAOBgNVHQ8B
|
||||
Tm9kZTExEDAOBgNVBAsTB0JpdFhIdWIxEDAOBgNVBAMTB0JpdFhIdWIwWTATBgcq
|
||||
hkjOPQIBBggqhkjOPQMBBwNCAATgjTYEnavxerFuEKJ8C39QUY12xh/TC2E5V7ni
|
||||
nmQcOgDDRv5HW4sskTSm/WX2D0BMzwb7XE5ATyoDeM9qcurDozEwLzAOBgNVHQ8B
|
||||
Af8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAMBgNVHRMBAf8EAjAAMAoGCCqGSM49
|
||||
BAMCA0gAMEUCIQCMgYSwQ9go1jjAcC4SxpJl4moA8Ba/GEb0qwFPaNmSCwIgDEOo
|
||||
UpUSNYEQJvahR4BxxVLOBf/CNlKhAGBVNKTccxk=
|
||||
BAMCA0kAMEYCIQD5Oz1xJvFgzYm/lTzoaO/i0ayPVRgSdBwvK6hEICo5lAIhAMtG
|
||||
aswjd2wVA4zB5GPEmJ/tvPUnxrlOAU67AQMYR4zf
|
||||
-----END CERTIFICATE-----
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHcCAQEEIMQcu7NXkY6TE+7xNTSo8CTKG4Tp20CcWAAEVtRQAjlioAoGCCqGSM49
|
||||
AwEHoUQDQgAEPSDwQSpKksFpMA3SvgEcNqpQZgQ/WxfBydM9z13imk5p5xASbtXt
|
||||
L4x5frkBgc+cdbpQUVXquMYZpGbT2Qcjvg==
|
||||
MHcCAQEEIJjph6szT64kRmvzyZYWYaonaFVsvTZwRLqeV20wo2D3oAoGCCqGSM49
|
||||
AwEHoUQDQgAE4I02BJ2r8XqxbhCifAt/UFGNdsYf0wthOVe54p5kHDoAw0b+R1uL
|
||||
LJE0pv1l9g9ATM8G+1xOQE8qA3jPanLqww==
|
||||
-----END EC PRIVATE KEY-----
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
-----BEGIN EC PRIVATE KEY-----
|
||||
cu/PS7DoowDT5H5qEPYwvNVA3pM/Ae1TgIl/xeENyV0=
|
||||
BcNwjTDCxyxLNjFKQfMAc6sY6iJs+Ma59WZyC/4uhjE=
|
||||
-----END EC PRIVATE KEY-----
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICWTCCAf+gAwIBAgIDCGR3MAoGCCqGSM49BAMCMIGaMQswCQYDVQQGEwJDTjER
|
||||
MIICWjCCAf+gAwIBAgIDC8pcMAoGCCqGSM49BAMCMIGaMQswCQYDVQQGEwJDTjER
|
||||
MA8GA1UECBMIWmhlSmlhbmcxETAPBgNVBAcTCEhhbmdaaG91MR8wDQYDVQQJEwZz
|
||||
dHJlZXQwDgYDVQQJEwdhZGRyZXNzMQ8wDQYDVQQREwYzMjQwMDAxDzANBgNVBAoT
|
||||
BkFnZW5jeTEQMA4GA1UECxMHQml0WEh1YjEQMA4GA1UEAxMHQml0WEh1YjAgFw0y
|
||||
MDA4MTEwNTA3MTRaGA8yMDcwMDczMDA1MDcxNFowgZkxCzAJBgNVBAYTAkNOMREw
|
||||
MDA4MTEwNTA3MTNaGA8yMDcwMDczMDA1MDcxM1owgZkxCzAJBgNVBAYTAkNOMREw
|
||||
DwYDVQQIEwhaaGVKaWFuZzERMA8GA1UEBxMISGFuZ1pob3UxHzANBgNVBAkTBnN0
|
||||
cmVldDAOBgNVBAkTB2FkZHJlc3MxDzANBgNVBBETBjMyNDAwMDEOMAwGA1UEChMF
|
||||
Tm9kZTQxEDAOBgNVBAsTB0JpdFhIdWIxEDAOBgNVBAMTB0JpdFhIdWIwWTATBgcq
|
||||
hkjOPQIBBggqhkjOPQMBBwNCAARN1y/FhZpSg1kpXF38szDNRXdPkqoc8oRKdGzv
|
||||
3HdhtBdUO7jXe2xNaWVtNMGXVo+NuBi5t9qEoo+euxfnjlc9ozEwLzAOBgNVHQ8B
|
||||
Tm9kZTIxEDAOBgNVBAsTB0JpdFhIdWIxEDAOBgNVBAMTB0JpdFhIdWIwWTATBgcq
|
||||
hkjOPQIBBggqhkjOPQMBBwNCAARhGDBod719hBcz/lpLtEh8GsqzDhm1ZbjdaTsM
|
||||
GivsjOHRk9iEkwDtXmsMvYn3yOIq2RR60T7/G2swBzuZiZWxozEwLzAOBgNVHQ8B
|
||||
Af8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAMBgNVHRMBAf8EAjAAMAoGCCqGSM49
|
||||
BAMCA0gAMEUCIQCbsG7E158uzqYCzrrnrr2Xsnz7f5cFA2o4SXAF7R/IyAIgSxYS
|
||||
MGj0g0OBcxJqwTyyvF2FFOhlWjF9nq2eYK/rlzI=
|
||||
BAMCA0kAMEYCIQDrX3znEJ6zkhUhPN37LY5eurrCs7Brp/TQ/2geHdZLQAIhALxb
|
||||
Gk39mUrJ/4z/dVGwFYccWZB8UOV1M4iuN6ypF+Sc
|
||||
-----END CERTIFICATE-----
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHcCAQEEIFWx/9axMGfzqOO/T3OEBXZNli6dkX/9m+o1GjnEX+I1oAoGCCqGSM49
|
||||
AwEHoUQDQgAETdcvxYWaUoNZKVxd/LMwzUV3T5KqHPKESnRs79x3YbQXVDu413ts
|
||||
TWllbTTBl1aPjbgYubfahKKPnrsX545XPQ==
|
||||
MHcCAQEEICI2QiahAMKtO9tD9VnxZ2J3jvFt+/vTAtcAQzUcIPoXoAoGCCqGSM49
|
||||
AwEHoUQDQgAEYRgwaHe9fYQXM/5aS7RIfBrKsw4ZtWW43Wk7DBor7Izh0ZPYhJMA
|
||||
7V5rDL2J98jiKtkUetE+/xtrMAc7mYmVsQ==
|
||||
-----END EC PRIVATE KEY-----
|
||||
|
|
Loading…
Reference in New Issue