From d25ef8800b6fedac056cc0eb04c7b6cb3d48223f Mon Sep 17 00:00:00 2001 From: pavelkrolevets Date: Tue, 26 Mar 2024 17:40:05 +0300 Subject: [PATCH 01/10] add e2e --- .github/workflows/go-tasks.yml | 3 ++ cli/verify/verify.go | 4 +-- e2e.sh | 51 ++++++++++++++++++++++++++++++++++ pkgs/validator/validator.go | 2 +- 4 files changed, 57 insertions(+), 3 deletions(-) create mode 100755 e2e.sh diff --git a/.github/workflows/go-tasks.yml b/.github/workflows/go-tasks.yml index 9fab67b1..df46d89f 100644 --- a/.github/workflows/go-tasks.yml +++ b/.github/workflows/go-tasks.yml @@ -23,6 +23,9 @@ jobs: - name: Build run: go build -v ./... + - name: e2e + run: ./e2e.sh + - name: Test run: go test ./... -timeout 3600s diff --git a/cli/verify/verify.go b/cli/verify/verify.go index 3c5865ad..7f323921 100644 --- a/cli/verify/verify.go +++ b/cli/verify/verify.go @@ -5,9 +5,9 @@ import ( "log" "os" + "github.com/aquasecurity/table" "github.com/spf13/cobra" - "github.com/aquasecurity/table" cli_utils "github.com/bloxapp/ssv-dkg/cli/utils" "github.com/bloxapp/ssv-dkg/pkgs/validator" ) @@ -29,7 +29,7 @@ var Verify = &cobra.Command{ int(cli_utils.Validators), cli_utils.OwnerAddress, cli_utils.Nonce, - cli_utils.OwnerAddress, + cli_utils.WithdrawAddress, ) if err != nil { log.Printf("Failed to validate ceremony directory: %v", err) diff --git a/e2e.sh b/e2e.sh new file mode 100755 index 00000000..dad4ca4a --- /dev/null +++ b/e2e.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +# prepare +mkdir $(pwd)/output/initiator_logs/ + +# install fresh binary +env GO111MODULE=on go install -v -ldflags "-X main.Version=`git describe --tags $(git rev-list --tags --max-count=1)`" cmd/ssv-dkg/ssv-dkg.go + +# run init ceremony +ssv-dkg init \ + --validators 10 \ + --operatorIDs 60,61,62,63,64,65,66,67,68,69,70,71,72 \ + --operatorsInfo '[{"id": 60,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdFgzRHZ2cGZPM3BiVE9TQUxxbVoKVjYyalZZZFlrZ3o3anREemxkWVBJbTBDQ0I2dGhGZi9kK2tzR0JIUWhCWmxVZW5Xa2MzMUdXYjRVc3VUWjB6OQp2MmFiQS9qNlNCdENCRGEzQTZXc2J2RzhYRUdNVVhoRmdlUlNxNlpVdWF1VVVqaFA5ZjE2a3FGMmlKVFR0d3Y1CjJDZlVuTkp2TmhRWmFSN0hLb3dYM1dSMW02MUl0eDhtSGtwNU02aG1rZ3NyWDJhcWQzZllJeWFXTU85U0hUUm8KMFBtT3QwM2syRkpJeWU0OFViQzhlN2ExNTVqMVV4alBlSkZGSHJNSXhvMWFlaGVJaUlIT21yZ21qUmZDZDA0UQprTGVQRTh2enhNWEx6N3B0Y3dWeUFKWkJiNktsSTBpNW10RGtEdUJ6d2tmdk9JNndkS2ZFQ1JHaG00cXdJQXNNCmJ3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3060"}, + {"id": 61,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFudjdOeGorT1Q5ZTJUVWFlOHQKZHY3aE5rWktjc1AxS295TVZOZERzNjFvdnlCbWtNNmY3MUowcVlGdUZhaWJYd1pYaHUwb2U4cThZNi9aU01PUwpDTElrUHljakxhOXpyMEtYSjRyWW1rRG5DOEx1M2hlcktweUpHNVB4UXNlaVlaSGJNVDFzRXpGVDV6WWwvQWJ0CmU4UC83MDFpaHFYbThUSzVON2c1ZlBaZnV5cFJVTEV5OHZkQ1FheEpkRUtQSFEzRUluVWYvTCtVVVVVUXNMdGEKaFZsRzJwS2p4cmRHbm9vQUxNcnpLK3JtM0Rib1djb2F3aEM1cUZoeExGbmhkbXNSNktVZ0xNWWdJWk82UytsTgplbDVYSFd5TVBqYytCbWJWeGZZcW1CeHFMNTdDeEZTbmFwODk0djZZcnNkSUk3enh1QVQzQ2tmaHZGWklQcTFWCmZ3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3061"}, + {"id": 62,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMWdpY2pWYXJOTlRJMjFHY3laNFAKelJxWEZ3MnViZ1I4cDBia3FDOU8wTWJRcm1SRXhGbXRSUGNQUmVGeHZ2S0xYM2UvS0EyUmdzUnNacmc4RjJrVgplL2xLMHVzT3JsWVBqa1FDRHd2SGN4VUJWVkdpcytjKy9jckU4ZU1CWkROK0ZTMFFFRUNpd3ZMOC90Y0w2TFM5CkVOcmJjSkNjK29uWkVFcXF4Y1FibUdUK3JSVDRlT2JTamxIVnRzSFBZbmVBa1BjM0FDdUtrTjVQL21LNVU1a1YKckUvaTVrRWdtU1YvR2xHVWVCTnN6V25KQnpwYStpN0liYS9NTFh0WUxTeHVwWXdwT01jRVZyQWQ5TUVUa3dZSwphRnpWLzhpVXJVVGFObktxZ1FycC9Sd0gyTjNRa0U4S25FUVdlM1hxUHhNT0wxaTV0djdCbDJhRStrVFR3VUY5CldRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3062"}, + {"id": 63,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcEphOGMvTm5xTkN5UU5CM3NQUHkKakk2UDI5SjJmdms0MWF0cU5RdmJUcDNBSWFLWDRCVGtmYmY4c3Jma25qaU8zMkh0YzZISGhVR0JBL1dPbG9hWQpwdjgvTEoxWGQ3emgxQ3d0Tnh1b0Z3QzhFeVpNSWlmYTE1UnBjajBaWG9IR1d3N1NyR1JUZC9qY1NmZUxaWDVrClYyMldMZzNWN0dGYlQvN0R1SG5PaXJXUERRYnc2ZmlaRkdkd0lFUVhkZ2JkaUwrQ284WjVKUU04MitSYTdFMGsKRVdvRm1HSWJZa2l3c25WMklQbnp1bklXU2FmdFdIQlBPZlZlT0NjSVZHaldqQ3FBd3p5WlpnVTJiTm9zNGxtQQprQUxxU2krdkNnYzlXQW1pd21WdFhsNHI0T1M2Vm5aRmlTVkZqVlFVc2ljT0FXWGhPWHZrbXBockFKOGZxa0RmCitRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3063"}, + {"id": 64,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcmdOYXVHVTR3ZEUwVEdRb1NBYlQKMGp2VlpGV1BQbUM3a3hYUXdIOFFFVVRaSS9VYVJydXpxNXo2ZUpVTW4yYi9TT0VIc0k4S3JsdFRESWN5TGczQwovN0NHY05BZFQybmtjTXlTR0Z6STc2UFVuckdZNk1rVExWZVcvL2laYUZSQVpIVjRoemtLSFppVmw5K3dkUmJzCjlEd21zSmJ6eUNoVklCYnN4cGQ3akE0OUVPNkxzdnpZbXo5akFzZ3ZtbGZwdnNrNTQ4Z3FwNU1qMkliQkk3cFUKSk4vQURVTERHOTU3Zys3WjdxaUdLUGg5OG96T3ZXcG9rOWdxRFpRWWk3anZNb080OHYxLzlCNldZcXYvdFRWZgplSGJmeVpmbkFWSFlZWXV5T25wSlJaNzVRR2M1N29yREh0VVhCUjhOVUJHbnlpcHo2K3hOY216M1g0cnVSWmtCCmxRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3064"}, + {"id": 65,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBNjlubXU2VHlVN2JYR0UwWVlYN2kKSFJMdXBzNTkvQ3RDblVTOXpWUlNPQkhEb2d4OXIvMXRNSTZ1K096d1BxcjJ5MC9rNUtudm9QbDVjR0o5cHdEQgpnMnlzUHk2czFybDBEeGNnQ1JmeEdUeUMyN3NOci9vQ1dNeDhsN3E4cUZjVzlvblNPQnNZV09sWGEwSzJadldYCmRpUjNEdkczUVg5Y0gwbUVTSSsvRXNuOGpNTlhBTGs2eHFSa1NRL05HSmhTNFZyNW93REtFWjhOZVpvTTVjMnIKRVNMbkw3THkrOTBnV3lNSENWODFpei9aV2RhZ0hOVCtTODR1bHRFOXhVWm5zb2VRVVNFNURyVm9MdWZDaUZZMgptbXc0ZXUyQzVxWUcyNng0RE0rL3VVUmJzQ3RLa2ZPWk5BMW9IOWkreXBBMnY5YWluVlJiOVdLMDZtRTRHZlBPCnlRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3065"}, + {"id": 66,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdktvOG9iQXhlVnhKbWVZMy82bEkKSkg2WUVJZ1hzUjFFMXZ0UDZNejNmMGgwSTBLa1RQc3VFK3ZhdVFCYVNXNkxmc0ttaGR0V3NMUlF5SHdjVmErbgpEY1BvVjl0WGhMUkMxQ2xSeW9XN3AyUkNLQ0VGK1BONUdpd2FOY1ZXTU9Gck5OQWtNWU5Yc0p5T3dFQXFmcGU3CjRPcE5MelBKKy9PYlY0eVR6KzlUb3pFRWFVd1BlRkFEbFhnVDVKekd3aHJOUHlwTGdTN2NwOE8wWTIxcDkrT2IKOHZMRzdDWTh1ZmViODFZdG5MZmtGVUgxekRZRnl0bS9GV1VSUmorQkNJZHpnYzl2VjJDU20yYTN2SFZWVWloMgpGY0FHOVhRS2k1MU9GSFBydFhDOUs3RmVtOXJrN0hiREoycDg0MndUeFFJU2p0T21JM3BnLzdQN2RJd2ZNd1h1CmR3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3066"}, + {"id": 67,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMmpDZ282Qy9qQjF1ZVd4b0hKQkYKZG13WW5velNXQk5JcUhqMXdjZHpRYTMrQ3Fad3R5b3lqeWNYdW56N09zS29iWFYvS1JCMTNZRElLTGkrWmtGVwozREZybzJxYlR4M2RYQk1QR1hvTWV1cFdnejU4QW1JTDdCa3AzSTF1VlYxd1R5K2FqNEFiclJQMDNtSUpHUU1UCkRxSlF5NEtBdVFTaTREbjVOc3lLYVRKL2pKdE1OdC9IY0s1czh0aTExbHFweXd2SmxLamo0SUxjdVZlb1h1dFEKTWQ3SHBxRmYvRUp3anJEMVNGa3ZlaUdpSFkzQzhITEJiWDRNNVdhS2g3ZW42WEYwWGZ3RTR1VWIrcVA3NDdiWAp5WmVuZU85b3lNN3A1ZzAwY3hDTFgxZytma1NnSTBhblcxcjJXQ2hTZWpUNXVsUDB0UDVjNVNQUFg4bVppZzFHCjl3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3067"}, + {"id": 68,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMkRGZGRBR3B3UXNRM0VDTkRxRG4KQXBMYjN3WVpHVnNQWGlzTnpNTW1STThrRTVRWE5lSUpFQytxR29iZUJOSVZaTzBDNFREeGt5RDYxWkk2KzFIUgora0ExeVRSV0xxSEJXMWRMZ2phNEs3a2k5VlE5cWJhaXd5dzM0V1pxRFA3dkw5ZXBSWndNQ3VtYVcvbWJ5REVWCmw0Zmp1Q011cVhJOGRQcjlYdEg0amtwOEhQWjR0MmNabThEbzUvanFLeFVPcUpRQjlXN3h4bVE3OFRpNHpRYUMKRWJlSDA3WU5lQTN0Q0hwSE5yRFRJbGVXUnNaQTJWQ2pNVFBsTEg1dGltYjRHWVNMTHpiQmN0L3lFMlV1Y3VvOApsZ3RzWWpVSGU2VjJYOG50OUNNd2ZxM2E1OS9FUEpYYzJzTUtmNGs3aDdJRTlzRjB3MnNrUVZObW56NFB2OGdMCjR3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3068"}, + {"id": 69,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBenpNYlNTQ1A5cW4zUzBVSXFJT1oKcjRYK0hFUktDR3NoSDhLZlNSTEFyck9HM28wMk1NNHRRZUxIYklpNS9CVTZIanNLemFSUnh4QlNkamx6VSsyeAoxNTNUSVBxWFpLTWFlWkFLQUhNL2VMenJSK3BVRGhvQXFwbkNzdWxBdEY3UmVYUFQ5TWRYNlFJSU1RSHRYRHpiCkVCVUhNN3RKbkJsenBzbjlSdzhocGVxcm9Mb3Y3Y2JqWEt5Rm4zbFdzZGRHMFF4L1hXejQrQmJ4NGdxTmtCdFoKWURxRGtHUXZlVFJNSUZLL2xyQitKWGl2ZWF2WlM1U0JpNWdwZkNJa0JRZXVqUmNaQkgzYmNRM0lsamhyNXFNdApHMXFTWm9Pam93bnZzWndOS1l1UmUzK3lxMm9Yb2srVXEyaUR0SnhUMTBkOXRJc240ekRsd0NRcnZLRGdxVjFFCjN3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3069"}, + {"id": 70,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBc3czY1l6QTJVS25JV1NDeDJLeVAKMmlCcFp5WDV5WVR5ZTl3clZTOFZSMTY2V1pUc2JvWURGdXg2czRyM1FOSDNsKy9nN1VYR0dJRmhrM2RSejJjegpjd2IyQkdkNHUvSWNkWkEvaitqUEtTWWowaEJXT0JxaXdGUFZvQlgrb0RyVVU5eXdXM0Y1b0p0aVZrNEN6MzQrCnRkcXRFVUdpaFNFSDFpY1JVZlVuRTV2VGE4Q3NiUTQvd2lDaUlQRXZXRVJWRGwvUTJyZStwN2M2SFlGK1BNUVQKSUlLTUZDY255cHFIQ2hiVy9ycG1odWJpdHkwMUZ6ek1hS2cvbmNOMmJWOFRMU2ZPSXFXYzRXaTFZZ0x3YjJwKwpKa0lGOVdiY0l6L3p1RjBaZFdmbE5aSW12YURiR1JSTVFrRVQ0U1pqcFVZaE1BUVhrS1REcTI0KzhjWHBPdjZGCmtRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3070"}, + {"id": 71,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBNElqcmhLbXgvN1A3Vnc4YzVvdmkKdE94MnM2MHVMbitOSlY2ZG0zSnJxaDZKNUFTNmZLMGJjR3oybzRLdHNRU2NndURLbFpnUmNBUi9WbTVCYVZWQgp0aVd2MFFnS3RPT3YraDI3c0NSU2tKWUtVY3RTMThSbmhOWkQxSm00bjUvYTlXTEtlSzFKVDgxMFRZQUdqQkt4CjQvMVBUTlRwR01CeDcrV1RUS1FmVHpqYXEveDRLM3lrb3oxSzhnWTl4cFhCZlVLNC81L041bVIrbHVTMytvMmIKK0hBbUhmZzFMUVNmanlWNmhYVFZ6cU8rYzJ3dTUrcWpBQkFNK1V4L0VINHRtVHR4M2N2eVVwRTZUaWw5bE5SSQphS3FtcFk3aHMvZ2N5bVFRYVRoMExJOWVQUHgxNHdsZ0xzUWI2QlFId0tnbVZ6eWxaMGd1OUpsNW1PQVAwVUU5Ck9RSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3071"}, + {"id": 72,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdlBRMVoyS05QRXdtZ0ZkYnBGQUMKbktJNHJtU0NIelRNZ1MxeTRXMnQ1TzB5UW9Da3UwMFVRdXo0NERVZHJLK1QwbUFab2YwVzAzZTU4UFd1UGwwQQpycGMvVnhHQ0p2dStVYkExd01HMGpKazJsUU9sWU1GRGRuZFpMNlFRc3k0MmdUK1A1MkZoWmFEM09KTW9uQTBSCnk0VTkxL0tPcklnVXUxYkE3bGxIeVpDbVozam9CNFlzNTVEY0FObVp3QVBUR00zZUtUSTVpUTNQTVNJZWhYQzIKb2dmRmcvOXFtYTdMZHpleG5XSmdJUDRDdjVBcGU4UGtGWGpLMGVyZjhFT1pKMFZlYngyc0VGNlpGYUxuSTd6LwpPMFg1R3VTa2QzYmQxSDhlWUJqVWxOTForVFpLNnJzRGxoNVdISzFrS08wNytleGNRR3pBemFPNDRKRjFCVmMrCnRRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3072"}]' \ + --owner 0x81592c3de184a3e2c0dcb5a261bc107bfa91f494 \ + --nonce 1 \ + --withdrawAddress 0xa1a66cc5d309f19fb2fda2b7601b223053d0f7f4 \ + --network "mainnet" \ + --outputPath $(pwd)/output \ + --logLevel info \ + --logFormat json \ + --logLevelFormat capitalColor \ + --logFilePath $(pwd)/output/initiator_logs/debug.log + +# verify all ceremony results +find $(pwd)/output -mindepth 1 -maxdepth 1 -type d -name "ceremony*" | while read fname; do + echo "$fname" + if ssv-dkg verify \ + --ceremonyDir $fname \ + --nonce 1 \ + --owner 0x81592c3de184a3e2c0dcb5a261bc107bfa91f494 \ + --validators 10 \ + --withdrawAddress 0xa1a66cc5d309f19fb2fda2b7601b223053d0f7f4; then + echo results verify success + else + exit 1 + fi +done + + diff --git a/pkgs/validator/validator.go b/pkgs/validator/validator.go index 2eb5c98c..00fd6428 100644 --- a/pkgs/validator/validator.go +++ b/pkgs/validator/validator.go @@ -64,7 +64,7 @@ func ValidateResults( } err := crypto.ValidateDepositDataCLI(depositData, expectedWithdrawAddress) if err != nil { - return fmt.Errorf("err validating deposit data %w", err) + return fmt.Errorf("err validating deposit data: %w", err) } soloKeyshares := &wire.KeySharesCLI{ CreatedAt: allKeyshares.CreatedAt, From 4f08e028551e3b327706adeeaf136f9cbf080d96 Mon Sep 17 00:00:00 2001 From: pavelkrolevets Date: Tue, 26 Mar 2024 17:51:12 +0300 Subject: [PATCH 02/10] change make directory --- e2e.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/e2e.sh b/e2e.sh index dad4ca4a..bcb6a0e8 100755 --- a/e2e.sh +++ b/e2e.sh @@ -1,7 +1,9 @@ #!/bin/bash # prepare -mkdir $(pwd)/output/initiator_logs/ +if [ ! -d $(pwd)/output ]; then + mkdir -p $(pwd)/output; +fi # install fresh binary env GO111MODULE=on go install -v -ldflags "-X main.Version=`git describe --tags $(git rev-list --tags --max-count=1)`" cmd/ssv-dkg/ssv-dkg.go @@ -31,7 +33,7 @@ ssv-dkg init \ --logLevel info \ --logFormat json \ --logLevelFormat capitalColor \ - --logFilePath $(pwd)/output/initiator_logs/debug.log + --logFilePath $(pwd)/output/debug.log # verify all ceremony results find $(pwd)/output -mindepth 1 -maxdepth 1 -type d -name "ceremony*" | while read fname; do From 10bd0b6fb797b7ca7c1ab2ea1913154b6814e348 Mon Sep 17 00:00:00 2001 From: pavelkrolevets Date: Tue, 26 Mar 2024 18:17:01 +0300 Subject: [PATCH 03/10] update version from remote git refs --- e2e.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/e2e.sh b/e2e.sh index bcb6a0e8..8ae0d50c 100755 --- a/e2e.sh +++ b/e2e.sh @@ -5,8 +5,11 @@ if [ ! -d $(pwd)/output ]; then mkdir -p $(pwd)/output; fi +# get latest version +VESRION=$(git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='version:refname' --tags https://github.com/bloxapp/ssv-dkg.git '*.*.*' | tail --lines=1 | cut --delimiter='/' --fields=3) + # install fresh binary -env GO111MODULE=on go install -v -ldflags "-X main.Version=`git describe --tags $(git rev-list --tags --max-count=1)`" cmd/ssv-dkg/ssv-dkg.go +env GO111MODULE=on go install -v -ldflags "-X main.Version=$VESRION" cmd/ssv-dkg/ssv-dkg.go # run init ceremony ssv-dkg init \ From 80596042e31eb4ba9e0a6f2f71b5fc376a04a133 Mon Sep 17 00:00:00 2001 From: pavelkrolevets Date: Tue, 26 Mar 2024 18:21:28 +0300 Subject: [PATCH 04/10] check wrong verify --- e2e.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e.sh b/e2e.sh index 8ae0d50c..03fefe27 100755 --- a/e2e.sh +++ b/e2e.sh @@ -44,9 +44,9 @@ find $(pwd)/output -mindepth 1 -maxdepth 1 -type d -name "ceremony*" | while rea if ssv-dkg verify \ --ceremonyDir $fname \ --nonce 1 \ - --owner 0x81592c3de184a3e2c0dcb5a261bc107bfa91f494 \ + --owner 0x91592c3de184a3e2c0dcb5a261bc107bfa91f494 \ --validators 10 \ - --withdrawAddress 0xa1a66cc5d309f19fb2fda2b7601b223053d0f7f4; then + --withdrawAddress 0xb1a66cc5d309f19fb2fda2b7601b223053d0f7f4; then echo results verify success else exit 1 From 93c17a4e4f608c10cd6cff0925f2e425c336cb71 Mon Sep 17 00:00:00 2001 From: pavelkrolevets Date: Tue, 26 Mar 2024 18:29:01 +0300 Subject: [PATCH 05/10] Revert "check wrong verify" This reverts commit 80596042e31eb4ba9e0a6f2f71b5fc376a04a133. --- e2e.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e.sh b/e2e.sh index 03fefe27..8ae0d50c 100755 --- a/e2e.sh +++ b/e2e.sh @@ -44,9 +44,9 @@ find $(pwd)/output -mindepth 1 -maxdepth 1 -type d -name "ceremony*" | while rea if ssv-dkg verify \ --ceremonyDir $fname \ --nonce 1 \ - --owner 0x91592c3de184a3e2c0dcb5a261bc107bfa91f494 \ + --owner 0x81592c3de184a3e2c0dcb5a261bc107bfa91f494 \ --validators 10 \ - --withdrawAddress 0xb1a66cc5d309f19fb2fda2b7601b223053d0f7f4; then + --withdrawAddress 0xa1a66cc5d309f19fb2fda2b7601b223053d0f7f4; then echo results verify success else exit 1 From 7862c3a15b91b9d90ca64716850921753c174d53 Mon Sep 17 00:00:00 2001 From: pavelkrolevets Date: Wed, 27 Mar 2024 11:26:39 +0300 Subject: [PATCH 06/10] update operators + fix ID at pong message --- e2e.sh | 19 +++++-------------- pkgs/initiator/initiator.go | 2 +- pkgs/operator/state.go | 3 ++- pkgs/wire/types.go | 3 ++- pkgs/wire/types_encoding.go | 37 +++++++++++++++++++++++-------------- 5 files changed, 33 insertions(+), 31 deletions(-) diff --git a/e2e.sh b/e2e.sh index 8ae0d50c..06487c37 100755 --- a/e2e.sh +++ b/e2e.sh @@ -14,20 +14,11 @@ env GO111MODULE=on go install -v -ldflags "-X main.Version=$VESRION" cmd/ssv-dkg # run init ceremony ssv-dkg init \ --validators 10 \ - --operatorIDs 60,61,62,63,64,65,66,67,68,69,70,71,72 \ - --operatorsInfo '[{"id": 60,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdFgzRHZ2cGZPM3BiVE9TQUxxbVoKVjYyalZZZFlrZ3o3anREemxkWVBJbTBDQ0I2dGhGZi9kK2tzR0JIUWhCWmxVZW5Xa2MzMUdXYjRVc3VUWjB6OQp2MmFiQS9qNlNCdENCRGEzQTZXc2J2RzhYRUdNVVhoRmdlUlNxNlpVdWF1VVVqaFA5ZjE2a3FGMmlKVFR0d3Y1CjJDZlVuTkp2TmhRWmFSN0hLb3dYM1dSMW02MUl0eDhtSGtwNU02aG1rZ3NyWDJhcWQzZllJeWFXTU85U0hUUm8KMFBtT3QwM2syRkpJeWU0OFViQzhlN2ExNTVqMVV4alBlSkZGSHJNSXhvMWFlaGVJaUlIT21yZ21qUmZDZDA0UQprTGVQRTh2enhNWEx6N3B0Y3dWeUFKWkJiNktsSTBpNW10RGtEdUJ6d2tmdk9JNndkS2ZFQ1JHaG00cXdJQXNNCmJ3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3060"}, - {"id": 61,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFudjdOeGorT1Q5ZTJUVWFlOHQKZHY3aE5rWktjc1AxS295TVZOZERzNjFvdnlCbWtNNmY3MUowcVlGdUZhaWJYd1pYaHUwb2U4cThZNi9aU01PUwpDTElrUHljakxhOXpyMEtYSjRyWW1rRG5DOEx1M2hlcktweUpHNVB4UXNlaVlaSGJNVDFzRXpGVDV6WWwvQWJ0CmU4UC83MDFpaHFYbThUSzVON2c1ZlBaZnV5cFJVTEV5OHZkQ1FheEpkRUtQSFEzRUluVWYvTCtVVVVVUXNMdGEKaFZsRzJwS2p4cmRHbm9vQUxNcnpLK3JtM0Rib1djb2F3aEM1cUZoeExGbmhkbXNSNktVZ0xNWWdJWk82UytsTgplbDVYSFd5TVBqYytCbWJWeGZZcW1CeHFMNTdDeEZTbmFwODk0djZZcnNkSUk3enh1QVQzQ2tmaHZGWklQcTFWCmZ3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3061"}, - {"id": 62,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMWdpY2pWYXJOTlRJMjFHY3laNFAKelJxWEZ3MnViZ1I4cDBia3FDOU8wTWJRcm1SRXhGbXRSUGNQUmVGeHZ2S0xYM2UvS0EyUmdzUnNacmc4RjJrVgplL2xLMHVzT3JsWVBqa1FDRHd2SGN4VUJWVkdpcytjKy9jckU4ZU1CWkROK0ZTMFFFRUNpd3ZMOC90Y0w2TFM5CkVOcmJjSkNjK29uWkVFcXF4Y1FibUdUK3JSVDRlT2JTamxIVnRzSFBZbmVBa1BjM0FDdUtrTjVQL21LNVU1a1YKckUvaTVrRWdtU1YvR2xHVWVCTnN6V25KQnpwYStpN0liYS9NTFh0WUxTeHVwWXdwT01jRVZyQWQ5TUVUa3dZSwphRnpWLzhpVXJVVGFObktxZ1FycC9Sd0gyTjNRa0U4S25FUVdlM1hxUHhNT0wxaTV0djdCbDJhRStrVFR3VUY5CldRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3062"}, - {"id": 63,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcEphOGMvTm5xTkN5UU5CM3NQUHkKakk2UDI5SjJmdms0MWF0cU5RdmJUcDNBSWFLWDRCVGtmYmY4c3Jma25qaU8zMkh0YzZISGhVR0JBL1dPbG9hWQpwdjgvTEoxWGQ3emgxQ3d0Tnh1b0Z3QzhFeVpNSWlmYTE1UnBjajBaWG9IR1d3N1NyR1JUZC9qY1NmZUxaWDVrClYyMldMZzNWN0dGYlQvN0R1SG5PaXJXUERRYnc2ZmlaRkdkd0lFUVhkZ2JkaUwrQ284WjVKUU04MitSYTdFMGsKRVdvRm1HSWJZa2l3c25WMklQbnp1bklXU2FmdFdIQlBPZlZlT0NjSVZHaldqQ3FBd3p5WlpnVTJiTm9zNGxtQQprQUxxU2krdkNnYzlXQW1pd21WdFhsNHI0T1M2Vm5aRmlTVkZqVlFVc2ljT0FXWGhPWHZrbXBockFKOGZxa0RmCitRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3063"}, - {"id": 64,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcmdOYXVHVTR3ZEUwVEdRb1NBYlQKMGp2VlpGV1BQbUM3a3hYUXdIOFFFVVRaSS9VYVJydXpxNXo2ZUpVTW4yYi9TT0VIc0k4S3JsdFRESWN5TGczQwovN0NHY05BZFQybmtjTXlTR0Z6STc2UFVuckdZNk1rVExWZVcvL2laYUZSQVpIVjRoemtLSFppVmw5K3dkUmJzCjlEd21zSmJ6eUNoVklCYnN4cGQ3akE0OUVPNkxzdnpZbXo5akFzZ3ZtbGZwdnNrNTQ4Z3FwNU1qMkliQkk3cFUKSk4vQURVTERHOTU3Zys3WjdxaUdLUGg5OG96T3ZXcG9rOWdxRFpRWWk3anZNb080OHYxLzlCNldZcXYvdFRWZgplSGJmeVpmbkFWSFlZWXV5T25wSlJaNzVRR2M1N29yREh0VVhCUjhOVUJHbnlpcHo2K3hOY216M1g0cnVSWmtCCmxRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3064"}, - {"id": 65,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBNjlubXU2VHlVN2JYR0UwWVlYN2kKSFJMdXBzNTkvQ3RDblVTOXpWUlNPQkhEb2d4OXIvMXRNSTZ1K096d1BxcjJ5MC9rNUtudm9QbDVjR0o5cHdEQgpnMnlzUHk2czFybDBEeGNnQ1JmeEdUeUMyN3NOci9vQ1dNeDhsN3E4cUZjVzlvblNPQnNZV09sWGEwSzJadldYCmRpUjNEdkczUVg5Y0gwbUVTSSsvRXNuOGpNTlhBTGs2eHFSa1NRL05HSmhTNFZyNW93REtFWjhOZVpvTTVjMnIKRVNMbkw3THkrOTBnV3lNSENWODFpei9aV2RhZ0hOVCtTODR1bHRFOXhVWm5zb2VRVVNFNURyVm9MdWZDaUZZMgptbXc0ZXUyQzVxWUcyNng0RE0rL3VVUmJzQ3RLa2ZPWk5BMW9IOWkreXBBMnY5YWluVlJiOVdLMDZtRTRHZlBPCnlRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3065"}, - {"id": 66,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdktvOG9iQXhlVnhKbWVZMy82bEkKSkg2WUVJZ1hzUjFFMXZ0UDZNejNmMGgwSTBLa1RQc3VFK3ZhdVFCYVNXNkxmc0ttaGR0V3NMUlF5SHdjVmErbgpEY1BvVjl0WGhMUkMxQ2xSeW9XN3AyUkNLQ0VGK1BONUdpd2FOY1ZXTU9Gck5OQWtNWU5Yc0p5T3dFQXFmcGU3CjRPcE5MelBKKy9PYlY0eVR6KzlUb3pFRWFVd1BlRkFEbFhnVDVKekd3aHJOUHlwTGdTN2NwOE8wWTIxcDkrT2IKOHZMRzdDWTh1ZmViODFZdG5MZmtGVUgxekRZRnl0bS9GV1VSUmorQkNJZHpnYzl2VjJDU20yYTN2SFZWVWloMgpGY0FHOVhRS2k1MU9GSFBydFhDOUs3RmVtOXJrN0hiREoycDg0MndUeFFJU2p0T21JM3BnLzdQN2RJd2ZNd1h1CmR3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3066"}, - {"id": 67,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMmpDZ282Qy9qQjF1ZVd4b0hKQkYKZG13WW5velNXQk5JcUhqMXdjZHpRYTMrQ3Fad3R5b3lqeWNYdW56N09zS29iWFYvS1JCMTNZRElLTGkrWmtGVwozREZybzJxYlR4M2RYQk1QR1hvTWV1cFdnejU4QW1JTDdCa3AzSTF1VlYxd1R5K2FqNEFiclJQMDNtSUpHUU1UCkRxSlF5NEtBdVFTaTREbjVOc3lLYVRKL2pKdE1OdC9IY0s1czh0aTExbHFweXd2SmxLamo0SUxjdVZlb1h1dFEKTWQ3SHBxRmYvRUp3anJEMVNGa3ZlaUdpSFkzQzhITEJiWDRNNVdhS2g3ZW42WEYwWGZ3RTR1VWIrcVA3NDdiWAp5WmVuZU85b3lNN3A1ZzAwY3hDTFgxZytma1NnSTBhblcxcjJXQ2hTZWpUNXVsUDB0UDVjNVNQUFg4bVppZzFHCjl3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3067"}, - {"id": 68,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMkRGZGRBR3B3UXNRM0VDTkRxRG4KQXBMYjN3WVpHVnNQWGlzTnpNTW1STThrRTVRWE5lSUpFQytxR29iZUJOSVZaTzBDNFREeGt5RDYxWkk2KzFIUgora0ExeVRSV0xxSEJXMWRMZ2phNEs3a2k5VlE5cWJhaXd5dzM0V1pxRFA3dkw5ZXBSWndNQ3VtYVcvbWJ5REVWCmw0Zmp1Q011cVhJOGRQcjlYdEg0amtwOEhQWjR0MmNabThEbzUvanFLeFVPcUpRQjlXN3h4bVE3OFRpNHpRYUMKRWJlSDA3WU5lQTN0Q0hwSE5yRFRJbGVXUnNaQTJWQ2pNVFBsTEg1dGltYjRHWVNMTHpiQmN0L3lFMlV1Y3VvOApsZ3RzWWpVSGU2VjJYOG50OUNNd2ZxM2E1OS9FUEpYYzJzTUtmNGs3aDdJRTlzRjB3MnNrUVZObW56NFB2OGdMCjR3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3068"}, - {"id": 69,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBenpNYlNTQ1A5cW4zUzBVSXFJT1oKcjRYK0hFUktDR3NoSDhLZlNSTEFyck9HM28wMk1NNHRRZUxIYklpNS9CVTZIanNLemFSUnh4QlNkamx6VSsyeAoxNTNUSVBxWFpLTWFlWkFLQUhNL2VMenJSK3BVRGhvQXFwbkNzdWxBdEY3UmVYUFQ5TWRYNlFJSU1RSHRYRHpiCkVCVUhNN3RKbkJsenBzbjlSdzhocGVxcm9Mb3Y3Y2JqWEt5Rm4zbFdzZGRHMFF4L1hXejQrQmJ4NGdxTmtCdFoKWURxRGtHUXZlVFJNSUZLL2xyQitKWGl2ZWF2WlM1U0JpNWdwZkNJa0JRZXVqUmNaQkgzYmNRM0lsamhyNXFNdApHMXFTWm9Pam93bnZzWndOS1l1UmUzK3lxMm9Yb2srVXEyaUR0SnhUMTBkOXRJc240ekRsd0NRcnZLRGdxVjFFCjN3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3069"}, - {"id": 70,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBc3czY1l6QTJVS25JV1NDeDJLeVAKMmlCcFp5WDV5WVR5ZTl3clZTOFZSMTY2V1pUc2JvWURGdXg2czRyM1FOSDNsKy9nN1VYR0dJRmhrM2RSejJjegpjd2IyQkdkNHUvSWNkWkEvaitqUEtTWWowaEJXT0JxaXdGUFZvQlgrb0RyVVU5eXdXM0Y1b0p0aVZrNEN6MzQrCnRkcXRFVUdpaFNFSDFpY1JVZlVuRTV2VGE4Q3NiUTQvd2lDaUlQRXZXRVJWRGwvUTJyZStwN2M2SFlGK1BNUVQKSUlLTUZDY255cHFIQ2hiVy9ycG1odWJpdHkwMUZ6ek1hS2cvbmNOMmJWOFRMU2ZPSXFXYzRXaTFZZ0x3YjJwKwpKa0lGOVdiY0l6L3p1RjBaZFdmbE5aSW12YURiR1JSTVFrRVQ0U1pqcFVZaE1BUVhrS1REcTI0KzhjWHBPdjZGCmtRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3070"}, - {"id": 71,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBNElqcmhLbXgvN1A3Vnc4YzVvdmkKdE94MnM2MHVMbitOSlY2ZG0zSnJxaDZKNUFTNmZLMGJjR3oybzRLdHNRU2NndURLbFpnUmNBUi9WbTVCYVZWQgp0aVd2MFFnS3RPT3YraDI3c0NSU2tKWUtVY3RTMThSbmhOWkQxSm00bjUvYTlXTEtlSzFKVDgxMFRZQUdqQkt4CjQvMVBUTlRwR01CeDcrV1RUS1FmVHpqYXEveDRLM3lrb3oxSzhnWTl4cFhCZlVLNC81L041bVIrbHVTMytvMmIKK0hBbUhmZzFMUVNmanlWNmhYVFZ6cU8rYzJ3dTUrcWpBQkFNK1V4L0VINHRtVHR4M2N2eVVwRTZUaWw5bE5SSQphS3FtcFk3aHMvZ2N5bVFRYVRoMExJOWVQUHgxNHdsZ0xzUWI2QlFId0tnbVZ6eWxaMGd1OUpsNW1PQVAwVUU5Ck9RSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3071"}, - {"id": 72,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdlBRMVoyS05QRXdtZ0ZkYnBGQUMKbktJNHJtU0NIelRNZ1MxeTRXMnQ1TzB5UW9Da3UwMFVRdXo0NERVZHJLK1QwbUFab2YwVzAzZTU4UFd1UGwwQQpycGMvVnhHQ0p2dStVYkExd01HMGpKazJsUU9sWU1GRGRuZFpMNlFRc3k0MmdUK1A1MkZoWmFEM09KTW9uQTBSCnk0VTkxL0tPcklnVXUxYkE3bGxIeVpDbVozam9CNFlzNTVEY0FObVp3QVBUR00zZUtUSTVpUTNQTVNJZWhYQzIKb2dmRmcvOXFtYTdMZHpleG5XSmdJUDRDdjVBcGU4UGtGWGpLMGVyZjhFT1pKMFZlYngyc0VGNlpGYUxuSTd6LwpPMFg1R3VTa2QzYmQxSDhlWUJqVWxOTForVFpLNnJzRGxoNVdISzFrS08wNytleGNRR3pBemFPNDRKRjFCVmMrCnRRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://116.202.218.95:3072"}]' \ + --operatorIDs 1,2,3,4 \ + --operatorsInfo '[{"id": 1,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMVg2MUFXY001QUNLaGN5MTlUaEIKby9HMWlhN1ByOVUralJ5aWY5ZjAyRG9sd091V2ZLLzdSVUlhOEhEbHBvQlVERDkwRTVQUGdJSy9sTXB4RytXbwpwQ2N5bTBpWk9UT0JzNDE5bEh3TzA4bXFja1JsZEg5WExmbmY2UThqWFR5Ym1yYzdWNmwyNVprcTl4U0owbHR1CndmTnVTSzNCZnFtNkQxOUY0aTVCbmVaSWhjRVJTYlFLWDFxbWNqYnZFL2cyQko4TzhaZUgrd0RzTHJiNnZXQVIKY3BYWG1uelE3Vlp6ZklHTGVLVU1CTTh6SW0rcXI4RGZ4SEhSeVU1QTE3cFU4cy9MNUp5RXE1RGJjc2Q2dHlnbQp5UE9BYUNzWldVREI3UGhLOHpUWU9WYi9MM1lnSTU4bjFXek5IM0s5cmFreUppTmUxTE9GVVZzQTFDUnhtQ2YzCmlRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://35.161.207.60:3030"}, + {"id": 2,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBeUtVWTVEUmZZREljengzcjhVY0UKTlpFMFdIQXFuV2FIRjZYRlUydVdObjVOVE94Zkt4ZmZaLzkyeVE1citQVkJPRmQrcHhILzI2QXJVT3dNL1lBRQpRbDZ0VzBtc1FqdUtIU1Q4aUtvTDRTNUt0aDNoeTBqeFRHR1ZZaWdjWG1vRURjd2YxaG8wdWRxRmlEN3dFWXN1CmZHa2E2U1ZQNnBab1NMaU9HZFRKUWVzVDI5WEVCdDZnblhMaFB1MER2K0xsQUJJQ1pqWEFTZWtpSFVKUHRjYlgKRjZFL0lScGpkWHVNSmUyOXZDcmZudXhWWk93a1ptdzJXdGljYlNDOVJpSFRYWUQ1dnVGakZXRHNZMERHUDhzOAoyc1haVHdsNWl4dEhlUWM2N1lLRFN6YU1MNnY1VUVZblhUTzZzNHFVSWVnTXJwZjd3S0xGVWxqRTMwbnNIaVBUCjBRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://35.88.187.25:3030"}, + {"id": 3,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBNWVUNUwwV0h6ZTdyTWZPb2xtVHMKdWtIQ2E4K3dtbUw2OTFJQ1RpREE1UkJ1TkxqSVQ2WkE0YzMxcVRIY3FBVHl5eVkwLzk3R3lKZ2doYnlFR2RoZQovalh6aWVTOXJ2RytJVGF1QjhMVlhkekxGYVQxWEZWeFlnN2x2TlB4OURPL1ZoRkhkWWxnT3I2d0RtV3FjRGo3ClhWUWFOWEFtRng3NjVQNTlXNXZzVGRXVWFHRWxXSm93SkZKdnc2UlRISkZ1TVhjSzZVaWJ0cUZMSmJwOW5kdUgKQjlLSzNWcmYrZmtJOWRBZ2txRDFHOElxQ0tKMVl3bjUyeGxxbTRCNitOOGZUZE1MS1JucWpFZmRzV1dwMFVzMQpLTW9vSXcyc3BoaXAzUFpNYnJaaU0wNjJ2ZUo0U3ovYjBObWdPTnhTd0JJTnNxcG54QjhFUVQxSTNjNklqNXhhCm5RSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://34.217.180.37:3030"}, + {"id": 4,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdXZleUpUMURwM21mQ3FRTUora2YKZHdhV0d1bkRURUFaWmNTOHdtUTJBcjU1bE5venl5cHRwb1lGSTgxaW1RSmpwdVV0akR2am15RDRQSmt1SzFXRQovZG9TSzFraWlTSEYvZFBaeE5ZT2swMlRiTGIvTXBjMG12VE1nZmRsVDBoTlVOWDZIMnJzZzNlc2NEOStENEdDCmxtZGpCdmdxUDQydXdDbFlQUVhuN3Z6OWlOOEpXdEFtd1JkQ25USkZ6M2tYSEFPVGMyMjJGYXp4ZGJVNEVPYkIKVmJNejd2UXRmMWtNSGtacEh5UXNpL3F0WmhQaThtTlNQTWpMTDBtcmc4Ly9xVjIyeEVPNENmSHFKZkZOWEhKVwpEbU85M2h2QXE2dDFZOGN5UVZkSGZ2WEp5VzRxR29MY25HZzV1S2ZSYWVCSSt1aXFSeExOL2dtTnA2RzdpZVNkCkl3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://52.12.84.255:3030"}]' \ --owner 0x81592c3de184a3e2c0dcb5a261bc107bfa91f494 \ --nonce 1 \ --withdrawAddress 0xa1a66cc5d309f19fb2fda2b7601b223053d0f7f4 \ diff --git a/pkgs/initiator/initiator.go b/pkgs/initiator/initiator.go index 5e6fc304..abc0e327 100644 --- a/pkgs/initiator/initiator.go +++ b/pkgs/initiator/initiator.go @@ -494,6 +494,6 @@ func (c *Initiator) processPongMessage(res wire.PongResult) error { if err := crypto.VerifyRSA(pub, pongBytes, signedPongMsg.Signature); err != nil { return err } - c.Logger.Info("🍎 operator online and healthy", zap.String("ID", fmt.Sprint(signedPongMsg.Signer)), zap.String("IP", res.IP), zap.String("Version", string(signedPongMsg.Message.Version)), zap.String("Public key", string(pong.PubKey))) + c.Logger.Info("🍎 operator online and healthy", zap.String("ID", fmt.Sprint(pong.OperatorID)), zap.String("IP", res.IP), zap.String("Version", string(signedPongMsg.Message.Version)), zap.String("Public key", string(pong.PubKey))) return nil } diff --git a/pkgs/operator/state.go b/pkgs/operator/state.go index d3ffb9f5..cd3c2270 100644 --- a/pkgs/operator/state.go +++ b/pkgs/operator/state.go @@ -298,7 +298,8 @@ func (s *Switch) MarshallAndSign(msg wire.SSZMarshaller, msgType wire.TransportT func (s *Switch) Pong() ([]byte, error) { pong := &wire.Pong{ - PubKey: s.PubKeyBytes, + OperatorID: s.OperatorID, + PubKey: s.PubKeyBytes, } return s.MarshallAndSign(pong, wire.PongMessageType, s.OperatorID, [24]byte{}) } diff --git a/pkgs/wire/types.go b/pkgs/wire/types.go index 8e31aab4..9219ee41 100644 --- a/pkgs/wire/types.go +++ b/pkgs/wire/types.go @@ -176,7 +176,8 @@ type Ping struct { } type Pong struct { - PubKey []byte `ssz-max:"2048"` + OperatorID uint64 + PubKey []byte `ssz-max:"2048"` } type ResultData struct { diff --git a/pkgs/wire/types_encoding.go b/pkgs/wire/types_encoding.go index b19e9a94..e5b689c5 100644 --- a/pkgs/wire/types_encoding.go +++ b/pkgs/wire/types_encoding.go @@ -1,5 +1,5 @@ // Code generated by fastssz. DO NOT EDIT. -// Hash: db9a7805679ef003ff6b65f66fbc53b88601aade4fc659b88c037951fe2c8cb9 +// Hash: 2511714639ca22f98c0aaebac655f66cf5e8e5b6d1e4de9ec688720aecce9d6c // Version: 0.1.3 package wire @@ -2159,13 +2159,16 @@ func (p *Pong) MarshalSSZ() ([]byte, error) { // MarshalSSZTo ssz marshals the Pong object to a target array func (p *Pong) MarshalSSZTo(buf []byte) (dst []byte, err error) { dst = buf - offset := int(4) + offset := int(12) + + // Field (0) 'OperatorID' + dst = ssz.MarshalUint64(dst, p.OperatorID) - // Offset (0) 'PubKey' + // Offset (1) 'PubKey' dst = ssz.WriteOffset(dst, offset) offset += len(p.PubKey) - // Field (0) 'PubKey' + // Field (1) 'PubKey' if size := len(p.PubKey); size > 2048 { err = ssz.ErrBytesLengthFn("Pong.PubKey", size, 2048) return @@ -2179,25 +2182,28 @@ func (p *Pong) MarshalSSZTo(buf []byte) (dst []byte, err error) { func (p *Pong) UnmarshalSSZ(buf []byte) error { var err error size := uint64(len(buf)) - if size < 4 { + if size < 12 { return ssz.ErrSize } tail := buf - var o0 uint64 + var o1 uint64 - // Offset (0) 'PubKey' - if o0 = ssz.ReadOffset(buf[0:4]); o0 > size { + // Field (0) 'OperatorID' + p.OperatorID = ssz.UnmarshallUint64(buf[0:8]) + + // Offset (1) 'PubKey' + if o1 = ssz.ReadOffset(buf[8:12]); o1 > size { return ssz.ErrOffset } - if o0 < 4 { + if o1 < 12 { return ssz.ErrInvalidVariableOffset } - // Field (0) 'PubKey' + // Field (1) 'PubKey' { - buf = tail[o0:] + buf = tail[o1:] if len(buf) > 2048 { return ssz.ErrBytesLength } @@ -2211,9 +2217,9 @@ func (p *Pong) UnmarshalSSZ(buf []byte) error { // SizeSSZ returns the ssz encoded size in bytes for the Pong object func (p *Pong) SizeSSZ() (size int) { - size = 4 + size = 12 - // Field (0) 'PubKey' + // Field (1) 'PubKey' size += len(p.PubKey) return @@ -2228,7 +2234,10 @@ func (p *Pong) HashTreeRoot() ([32]byte, error) { func (p *Pong) HashTreeRootWith(hh ssz.HashWalker) (err error) { indx := hh.Index() - // Field (0) 'PubKey' + // Field (0) 'OperatorID' + hh.PutUint64(p.OperatorID) + + // Field (1) 'PubKey' { elemIndx := hh.Index() byteLen := uint64(len(p.PubKey)) From 1f551cf5f60916b81c30dd853819e0bd8bd400e4 Mon Sep 17 00:00:00 2001 From: pavelkrolevets Date: Tue, 2 Apr 2024 13:04:21 +0300 Subject: [PATCH 07/10] add 1, 10, 100 validators to e2e --- e2e.sh | 36 +++++++++++++++++++------------- pkgs/validator/directory_test.go | 2 +- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/e2e.sh b/e2e.sh index 06487c37..463d0cd4 100755 --- a/e2e.sh +++ b/e2e.sh @@ -12,8 +12,10 @@ VESRION=$(git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='ver env GO111MODULE=on go install -v -ldflags "-X main.Version=$VESRION" cmd/ssv-dkg/ssv-dkg.go # run init ceremony -ssv-dkg init \ - --validators 10 \ + +for val in 1 10 100; do + ssv-dkg init \ + --validators $val \ --operatorIDs 1,2,3,4 \ --operatorsInfo '[{"id": 1,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMVg2MUFXY001QUNLaGN5MTlUaEIKby9HMWlhN1ByOVUralJ5aWY5ZjAyRG9sd091V2ZLLzdSVUlhOEhEbHBvQlVERDkwRTVQUGdJSy9sTXB4RytXbwpwQ2N5bTBpWk9UT0JzNDE5bEh3TzA4bXFja1JsZEg5WExmbmY2UThqWFR5Ym1yYzdWNmwyNVprcTl4U0owbHR1CndmTnVTSzNCZnFtNkQxOUY0aTVCbmVaSWhjRVJTYlFLWDFxbWNqYnZFL2cyQko4TzhaZUgrd0RzTHJiNnZXQVIKY3BYWG1uelE3Vlp6ZklHTGVLVU1CTTh6SW0rcXI4RGZ4SEhSeVU1QTE3cFU4cy9MNUp5RXE1RGJjc2Q2dHlnbQp5UE9BYUNzWldVREI3UGhLOHpUWU9WYi9MM1lnSTU4bjFXek5IM0s5cmFreUppTmUxTE9GVVZzQTFDUnhtQ2YzCmlRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://35.161.207.60:3030"}, {"id": 2,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBeUtVWTVEUmZZREljengzcjhVY0UKTlpFMFdIQXFuV2FIRjZYRlUydVdObjVOVE94Zkt4ZmZaLzkyeVE1citQVkJPRmQrcHhILzI2QXJVT3dNL1lBRQpRbDZ0VzBtc1FqdUtIU1Q4aUtvTDRTNUt0aDNoeTBqeFRHR1ZZaWdjWG1vRURjd2YxaG8wdWRxRmlEN3dFWXN1CmZHa2E2U1ZQNnBab1NMaU9HZFRKUWVzVDI5WEVCdDZnblhMaFB1MER2K0xsQUJJQ1pqWEFTZWtpSFVKUHRjYlgKRjZFL0lScGpkWHVNSmUyOXZDcmZudXhWWk93a1ptdzJXdGljYlNDOVJpSFRYWUQ1dnVGakZXRHNZMERHUDhzOAoyc1haVHdsNWl4dEhlUWM2N1lLRFN6YU1MNnY1VUVZblhUTzZzNHFVSWVnTXJwZjd3S0xGVWxqRTMwbnNIaVBUCjBRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://35.88.187.25:3030"}, @@ -29,19 +31,23 @@ ssv-dkg init \ --logLevelFormat capitalColor \ --logFilePath $(pwd)/output/debug.log -# verify all ceremony results -find $(pwd)/output -mindepth 1 -maxdepth 1 -type d -name "ceremony*" | while read fname; do - echo "$fname" - if ssv-dkg verify \ - --ceremonyDir $fname \ - --nonce 1 \ - --owner 0x81592c3de184a3e2c0dcb5a261bc107bfa91f494 \ - --validators 10 \ - --withdrawAddress 0xa1a66cc5d309f19fb2fda2b7601b223053d0f7f4; then - echo results verify success - else - exit 1 - fi + # verify all ceremony results + find $(pwd)/output -mindepth 1 -maxdepth 1 -type d -name "ceremony*" | while read fname; do + echo "$fname" + if ssv-dkg verify \ + --ceremonyDir $fname \ + --nonce 1 \ + --owner 0x81592c3de184a3e2c0dcb5a261bc107bfa91f494 \ + --validators $val \ + --withdrawAddress 0xa1a66cc5d309f19fb2fda2b7601b223053d0f7f4; then + echo results verify success + else + exit 1 + fi + rm -rf $(pwd)/output/ceremony* + done done + + diff --git a/pkgs/validator/directory_test.go b/pkgs/validator/directory_test.go index bc5c7874..8d1e6fd7 100644 --- a/pkgs/validator/directory_test.go +++ b/pkgs/validator/directory_test.go @@ -113,7 +113,7 @@ func TestValidateResultsDir(t *testing.T) { ownerAddress: common.HexToAddress("0x5cc0dde14e7256340cc820415a6022a7d1c93a35"), ownerNonce: 2731, withdrawAddress: common.HexToAddress("0x5cC0DdE14E7256340CC820415a6022a7d1c93A35"), - expectedErr: "err validating deposit data failed to verify deposit roots: failed to verify deposit data: invalid signature", + expectedErr: "invalid signature", }, } for _, test := range tests { From 7788c5a8fa274b721179e7a3bb37e39d3e489d16 Mon Sep 17 00:00:00 2001 From: pavelkrolevets Date: Thu, 4 Apr 2024 13:29:14 +0300 Subject: [PATCH 08/10] add exit if init fail --- e2e.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/e2e.sh b/e2e.sh index 463d0cd4..c7f60647 100755 --- a/e2e.sh +++ b/e2e.sh @@ -14,7 +14,7 @@ env GO111MODULE=on go install -v -ldflags "-X main.Version=$VESRION" cmd/ssv-dkg # run init ceremony for val in 1 10 100; do - ssv-dkg init \ + if ssv-dkg init \ --validators $val \ --operatorIDs 1,2,3,4 \ --operatorsInfo '[{"id": 1,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMVg2MUFXY001QUNLaGN5MTlUaEIKby9HMWlhN1ByOVUralJ5aWY5ZjAyRG9sd091V2ZLLzdSVUlhOEhEbHBvQlVERDkwRTVQUGdJSy9sTXB4RytXbwpwQ2N5bTBpWk9UT0JzNDE5bEh3TzA4bXFja1JsZEg5WExmbmY2UThqWFR5Ym1yYzdWNmwyNVprcTl4U0owbHR1CndmTnVTSzNCZnFtNkQxOUY0aTVCbmVaSWhjRVJTYlFLWDFxbWNqYnZFL2cyQko4TzhaZUgrd0RzTHJiNnZXQVIKY3BYWG1uelE3Vlp6ZklHTGVLVU1CTTh6SW0rcXI4RGZ4SEhSeVU1QTE3cFU4cy9MNUp5RXE1RGJjc2Q2dHlnbQp5UE9BYUNzWldVREI3UGhLOHpUWU9WYi9MM1lnSTU4bjFXek5IM0s5cmFreUppTmUxTE9GVVZzQTFDUnhtQ2YzCmlRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://35.161.207.60:3030"}, @@ -30,6 +30,10 @@ for val in 1 10 100; do --logFormat json \ --logLevelFormat capitalColor \ --logFilePath $(pwd)/output/debug.log + echo init successfull + else + exit 1 + fi # verify all ceremony results find $(pwd)/output -mindepth 1 -maxdepth 1 -type d -name "ceremony*" | while read fname; do From e20840eaf9321d841708ee59034bb2f42e21e8d8 Mon Sep 17 00:00:00 2001 From: pavelkrolevets Date: Thu, 4 Apr 2024 13:36:37 +0300 Subject: [PATCH 09/10] small fix --- e2e.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e.sh b/e2e.sh index c7f60647..35fa434a 100755 --- a/e2e.sh +++ b/e2e.sh @@ -29,8 +29,8 @@ for val in 1 10 100; do --logLevel info \ --logFormat json \ --logLevelFormat capitalColor \ - --logFilePath $(pwd)/output/debug.log - echo init successfull + --logFilePath $(pwd)/output/debug.log; then + echo init started sucessfuly else exit 1 fi From 10b87e3f2c5b843bd93165d5e24e8e44500dd311 Mon Sep 17 00:00:00 2001 From: pavelkrolevets Date: Thu, 4 Apr 2024 13:42:06 +0300 Subject: [PATCH 10/10] add https to operator addresses --- e2e.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/e2e.sh b/e2e.sh index 35fa434a..b613abcc 100755 --- a/e2e.sh +++ b/e2e.sh @@ -17,10 +17,10 @@ for val in 1 10 100; do if ssv-dkg init \ --validators $val \ --operatorIDs 1,2,3,4 \ - --operatorsInfo '[{"id": 1,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMVg2MUFXY001QUNLaGN5MTlUaEIKby9HMWlhN1ByOVUralJ5aWY5ZjAyRG9sd091V2ZLLzdSVUlhOEhEbHBvQlVERDkwRTVQUGdJSy9sTXB4RytXbwpwQ2N5bTBpWk9UT0JzNDE5bEh3TzA4bXFja1JsZEg5WExmbmY2UThqWFR5Ym1yYzdWNmwyNVprcTl4U0owbHR1CndmTnVTSzNCZnFtNkQxOUY0aTVCbmVaSWhjRVJTYlFLWDFxbWNqYnZFL2cyQko4TzhaZUgrd0RzTHJiNnZXQVIKY3BYWG1uelE3Vlp6ZklHTGVLVU1CTTh6SW0rcXI4RGZ4SEhSeVU1QTE3cFU4cy9MNUp5RXE1RGJjc2Q2dHlnbQp5UE9BYUNzWldVREI3UGhLOHpUWU9WYi9MM1lnSTU4bjFXek5IM0s5cmFreUppTmUxTE9GVVZzQTFDUnhtQ2YzCmlRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://35.161.207.60:3030"}, - {"id": 2,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBeUtVWTVEUmZZREljengzcjhVY0UKTlpFMFdIQXFuV2FIRjZYRlUydVdObjVOVE94Zkt4ZmZaLzkyeVE1citQVkJPRmQrcHhILzI2QXJVT3dNL1lBRQpRbDZ0VzBtc1FqdUtIU1Q4aUtvTDRTNUt0aDNoeTBqeFRHR1ZZaWdjWG1vRURjd2YxaG8wdWRxRmlEN3dFWXN1CmZHa2E2U1ZQNnBab1NMaU9HZFRKUWVzVDI5WEVCdDZnblhMaFB1MER2K0xsQUJJQ1pqWEFTZWtpSFVKUHRjYlgKRjZFL0lScGpkWHVNSmUyOXZDcmZudXhWWk93a1ptdzJXdGljYlNDOVJpSFRYWUQ1dnVGakZXRHNZMERHUDhzOAoyc1haVHdsNWl4dEhlUWM2N1lLRFN6YU1MNnY1VUVZblhUTzZzNHFVSWVnTXJwZjd3S0xGVWxqRTMwbnNIaVBUCjBRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://35.88.187.25:3030"}, - {"id": 3,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBNWVUNUwwV0h6ZTdyTWZPb2xtVHMKdWtIQ2E4K3dtbUw2OTFJQ1RpREE1UkJ1TkxqSVQ2WkE0YzMxcVRIY3FBVHl5eVkwLzk3R3lKZ2doYnlFR2RoZQovalh6aWVTOXJ2RytJVGF1QjhMVlhkekxGYVQxWEZWeFlnN2x2TlB4OURPL1ZoRkhkWWxnT3I2d0RtV3FjRGo3ClhWUWFOWEFtRng3NjVQNTlXNXZzVGRXVWFHRWxXSm93SkZKdnc2UlRISkZ1TVhjSzZVaWJ0cUZMSmJwOW5kdUgKQjlLSzNWcmYrZmtJOWRBZ2txRDFHOElxQ0tKMVl3bjUyeGxxbTRCNitOOGZUZE1MS1JucWpFZmRzV1dwMFVzMQpLTW9vSXcyc3BoaXAzUFpNYnJaaU0wNjJ2ZUo0U3ovYjBObWdPTnhTd0JJTnNxcG54QjhFUVQxSTNjNklqNXhhCm5RSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://34.217.180.37:3030"}, - {"id": 4,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdXZleUpUMURwM21mQ3FRTUora2YKZHdhV0d1bkRURUFaWmNTOHdtUTJBcjU1bE5venl5cHRwb1lGSTgxaW1RSmpwdVV0akR2am15RDRQSmt1SzFXRQovZG9TSzFraWlTSEYvZFBaeE5ZT2swMlRiTGIvTXBjMG12VE1nZmRsVDBoTlVOWDZIMnJzZzNlc2NEOStENEdDCmxtZGpCdmdxUDQydXdDbFlQUVhuN3Z6OWlOOEpXdEFtd1JkQ25USkZ6M2tYSEFPVGMyMjJGYXp4ZGJVNEVPYkIKVmJNejd2UXRmMWtNSGtacEh5UXNpL3F0WmhQaThtTlNQTWpMTDBtcmc4Ly9xVjIyeEVPNENmSHFKZkZOWEhKVwpEbU85M2h2QXE2dDFZOGN5UVZkSGZ2WEp5VzRxR29MY25HZzV1S2ZSYWVCSSt1aXFSeExOL2dtTnA2RzdpZVNkCkl3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "http://52.12.84.255:3030"}]' \ + --operatorsInfo '[{"id": 1,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMVg2MUFXY001QUNLaGN5MTlUaEIKby9HMWlhN1ByOVUralJ5aWY5ZjAyRG9sd091V2ZLLzdSVUlhOEhEbHBvQlVERDkwRTVQUGdJSy9sTXB4RytXbwpwQ2N5bTBpWk9UT0JzNDE5bEh3TzA4bXFja1JsZEg5WExmbmY2UThqWFR5Ym1yYzdWNmwyNVprcTl4U0owbHR1CndmTnVTSzNCZnFtNkQxOUY0aTVCbmVaSWhjRVJTYlFLWDFxbWNqYnZFL2cyQko4TzhaZUgrd0RzTHJiNnZXQVIKY3BYWG1uelE3Vlp6ZklHTGVLVU1CTTh6SW0rcXI4RGZ4SEhSeVU1QTE3cFU4cy9MNUp5RXE1RGJjc2Q2dHlnbQp5UE9BYUNzWldVREI3UGhLOHpUWU9WYi9MM1lnSTU4bjFXek5IM0s5cmFreUppTmUxTE9GVVZzQTFDUnhtQ2YzCmlRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "https://35.161.207.60:3030"}, + {"id": 2,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBeUtVWTVEUmZZREljengzcjhVY0UKTlpFMFdIQXFuV2FIRjZYRlUydVdObjVOVE94Zkt4ZmZaLzkyeVE1citQVkJPRmQrcHhILzI2QXJVT3dNL1lBRQpRbDZ0VzBtc1FqdUtIU1Q4aUtvTDRTNUt0aDNoeTBqeFRHR1ZZaWdjWG1vRURjd2YxaG8wdWRxRmlEN3dFWXN1CmZHa2E2U1ZQNnBab1NMaU9HZFRKUWVzVDI5WEVCdDZnblhMaFB1MER2K0xsQUJJQ1pqWEFTZWtpSFVKUHRjYlgKRjZFL0lScGpkWHVNSmUyOXZDcmZudXhWWk93a1ptdzJXdGljYlNDOVJpSFRYWUQ1dnVGakZXRHNZMERHUDhzOAoyc1haVHdsNWl4dEhlUWM2N1lLRFN6YU1MNnY1VUVZblhUTzZzNHFVSWVnTXJwZjd3S0xGVWxqRTMwbnNIaVBUCjBRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "https://35.88.187.25:3030"}, + {"id": 3,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBNWVUNUwwV0h6ZTdyTWZPb2xtVHMKdWtIQ2E4K3dtbUw2OTFJQ1RpREE1UkJ1TkxqSVQ2WkE0YzMxcVRIY3FBVHl5eVkwLzk3R3lKZ2doYnlFR2RoZQovalh6aWVTOXJ2RytJVGF1QjhMVlhkekxGYVQxWEZWeFlnN2x2TlB4OURPL1ZoRkhkWWxnT3I2d0RtV3FjRGo3ClhWUWFOWEFtRng3NjVQNTlXNXZzVGRXVWFHRWxXSm93SkZKdnc2UlRISkZ1TVhjSzZVaWJ0cUZMSmJwOW5kdUgKQjlLSzNWcmYrZmtJOWRBZ2txRDFHOElxQ0tKMVl3bjUyeGxxbTRCNitOOGZUZE1MS1JucWpFZmRzV1dwMFVzMQpLTW9vSXcyc3BoaXAzUFpNYnJaaU0wNjJ2ZUo0U3ovYjBObWdPTnhTd0JJTnNxcG54QjhFUVQxSTNjNklqNXhhCm5RSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "https://34.217.180.37:3030"}, + {"id": 4,"public_key": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdXZleUpUMURwM21mQ3FRTUora2YKZHdhV0d1bkRURUFaWmNTOHdtUTJBcjU1bE5venl5cHRwb1lGSTgxaW1RSmpwdVV0akR2am15RDRQSmt1SzFXRQovZG9TSzFraWlTSEYvZFBaeE5ZT2swMlRiTGIvTXBjMG12VE1nZmRsVDBoTlVOWDZIMnJzZzNlc2NEOStENEdDCmxtZGpCdmdxUDQydXdDbFlQUVhuN3Z6OWlOOEpXdEFtd1JkQ25USkZ6M2tYSEFPVGMyMjJGYXp4ZGJVNEVPYkIKVmJNejd2UXRmMWtNSGtacEh5UXNpL3F0WmhQaThtTlNQTWpMTDBtcmc4Ly9xVjIyeEVPNENmSHFKZkZOWEhKVwpEbU85M2h2QXE2dDFZOGN5UVZkSGZ2WEp5VzRxR29MY25HZzV1S2ZSYWVCSSt1aXFSeExOL2dtTnA2RzdpZVNkCkl3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K","ip": "https://52.12.84.255:3030"}]' \ --owner 0x81592c3de184a3e2c0dcb5a261bc107bfa91f494 \ --nonce 1 \ --withdrawAddress 0xa1a66cc5d309f19fb2fda2b7601b223053d0f7f4 \