From 11ff272daf91c5ab365c8d19d34bfd009e5f0dba Mon Sep 17 00:00:00 2001 From: Cassandra Heart <7929478+CassOnMars@users.noreply.github.com> Date: Sat, 11 May 2024 02:02:03 -0500 Subject: [PATCH] =?UTF-8?q?v1.4.17=20=E2=80=93=20Aurora=20(#169)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * v1.4.17 – Aurora * binaries, digests, and first signature * signer #3 verified * signer #8 verified * signer #14 verified * signer #12 verified * Add signatures (#170) * Add files via upload (#171) * signer #4 verified * signer #11 verified * signer #16 verified * signer #1 verified * remove binaries from repo, release ready --------- Co-authored-by: Agost Biro <5764438+agostbiro@users.noreply.github.com> Co-authored-by: Demipoet <161999657+demipoet@users.noreply.github.com> --- client/cmd/crossMint.go | 209 ++++++++++++++++++++++ client/cmd/crossMint_test.go | 102 +++++++++++ client/go.mod | 40 ++++- client/go.sum | 110 ++++++++++++ client/main.go | 3 - node/config/version.go | 2 +- node/main.go | 16 +- node/node-1.4.17-darwin-arm64.dgst | 1 + node/node-1.4.17-darwin-arm64.dgst.sig.1 | Bin 0 -> 114 bytes node/node-1.4.17-darwin-arm64.dgst.sig.11 | Bin 0 -> 114 bytes node/node-1.4.17-darwin-arm64.dgst.sig.12 | Bin 0 -> 114 bytes node/node-1.4.17-darwin-arm64.dgst.sig.13 | Bin 0 -> 114 bytes node/node-1.4.17-darwin-arm64.dgst.sig.14 | Bin 0 -> 114 bytes node/node-1.4.17-darwin-arm64.dgst.sig.15 | Bin 0 -> 114 bytes node/node-1.4.17-darwin-arm64.dgst.sig.16 | Bin 0 -> 114 bytes node/node-1.4.17-darwin-arm64.dgst.sig.3 | Bin 0 -> 114 bytes node/node-1.4.17-darwin-arm64.dgst.sig.4 | Bin 0 -> 114 bytes node/node-1.4.17-darwin-arm64.dgst.sig.6 | Bin 0 -> 114 bytes node/node-1.4.17-darwin-arm64.dgst.sig.8 | Bin 0 -> 114 bytes node/node-1.4.17-linux-amd64.dgst | 1 + node/node-1.4.17-linux-amd64.dgst.sig.1 | Bin 0 -> 114 bytes node/node-1.4.17-linux-amd64.dgst.sig.11 | Bin 0 -> 114 bytes node/node-1.4.17-linux-amd64.dgst.sig.12 | Bin 0 -> 114 bytes node/node-1.4.17-linux-amd64.dgst.sig.13 | Bin 0 -> 114 bytes node/node-1.4.17-linux-amd64.dgst.sig.14 | Bin 0 -> 114 bytes node/node-1.4.17-linux-amd64.dgst.sig.15 | Bin 0 -> 114 bytes node/node-1.4.17-linux-amd64.dgst.sig.16 | Bin 0 -> 114 bytes node/node-1.4.17-linux-amd64.dgst.sig.3 | Bin 0 -> 114 bytes node/node-1.4.17-linux-amd64.dgst.sig.4 | Bin 0 -> 114 bytes node/node-1.4.17-linux-amd64.dgst.sig.6 | Bin 0 -> 114 bytes node/node-1.4.17-linux-amd64.dgst.sig.8 | Bin 0 -> 114 bytes node/node-1.4.17-linux-arm64.dgst | 1 + node/node-1.4.17-linux-arm64.dgst.sig.1 | Bin 0 -> 114 bytes node/node-1.4.17-linux-arm64.dgst.sig.11 | Bin 0 -> 114 bytes node/node-1.4.17-linux-arm64.dgst.sig.12 | Bin 0 -> 114 bytes node/node-1.4.17-linux-arm64.dgst.sig.13 | Bin 0 -> 114 bytes node/node-1.4.17-linux-arm64.dgst.sig.14 | Bin 0 -> 114 bytes node/node-1.4.17-linux-arm64.dgst.sig.15 | Bin 0 -> 114 bytes node/node-1.4.17-linux-arm64.dgst.sig.16 | Bin 0 -> 114 bytes node/node-1.4.17-linux-arm64.dgst.sig.3 | Bin 0 -> 114 bytes node/node-1.4.17-linux-arm64.dgst.sig.4 | Bin 0 -> 114 bytes node/node-1.4.17-linux-arm64.dgst.sig.6 | Bin 0 -> 114 bytes node/node-1.4.17-linux-arm64.dgst.sig.8 | Bin 0 -> 114 bytes 43 files changed, 469 insertions(+), 16 deletions(-) create mode 100644 client/cmd/crossMint.go create mode 100644 client/cmd/crossMint_test.go create mode 100644 node/node-1.4.17-darwin-arm64.dgst create mode 100644 node/node-1.4.17-darwin-arm64.dgst.sig.1 create mode 100644 node/node-1.4.17-darwin-arm64.dgst.sig.11 create mode 100644 node/node-1.4.17-darwin-arm64.dgst.sig.12 create mode 100644 node/node-1.4.17-darwin-arm64.dgst.sig.13 create mode 100644 node/node-1.4.17-darwin-arm64.dgst.sig.14 create mode 100644 node/node-1.4.17-darwin-arm64.dgst.sig.15 create mode 100644 node/node-1.4.17-darwin-arm64.dgst.sig.16 create mode 100644 node/node-1.4.17-darwin-arm64.dgst.sig.3 create mode 100644 node/node-1.4.17-darwin-arm64.dgst.sig.4 create mode 100644 node/node-1.4.17-darwin-arm64.dgst.sig.6 create mode 100644 node/node-1.4.17-darwin-arm64.dgst.sig.8 create mode 100644 node/node-1.4.17-linux-amd64.dgst create mode 100644 node/node-1.4.17-linux-amd64.dgst.sig.1 create mode 100644 node/node-1.4.17-linux-amd64.dgst.sig.11 create mode 100644 node/node-1.4.17-linux-amd64.dgst.sig.12 create mode 100644 node/node-1.4.17-linux-amd64.dgst.sig.13 create mode 100644 node/node-1.4.17-linux-amd64.dgst.sig.14 create mode 100644 node/node-1.4.17-linux-amd64.dgst.sig.15 create mode 100644 node/node-1.4.17-linux-amd64.dgst.sig.16 create mode 100644 node/node-1.4.17-linux-amd64.dgst.sig.3 create mode 100644 node/node-1.4.17-linux-amd64.dgst.sig.4 create mode 100644 node/node-1.4.17-linux-amd64.dgst.sig.6 create mode 100644 node/node-1.4.17-linux-amd64.dgst.sig.8 create mode 100644 node/node-1.4.17-linux-arm64.dgst create mode 100644 node/node-1.4.17-linux-arm64.dgst.sig.1 create mode 100644 node/node-1.4.17-linux-arm64.dgst.sig.11 create mode 100644 node/node-1.4.17-linux-arm64.dgst.sig.12 create mode 100644 node/node-1.4.17-linux-arm64.dgst.sig.13 create mode 100644 node/node-1.4.17-linux-arm64.dgst.sig.14 create mode 100644 node/node-1.4.17-linux-arm64.dgst.sig.15 create mode 100644 node/node-1.4.17-linux-arm64.dgst.sig.16 create mode 100644 node/node-1.4.17-linux-arm64.dgst.sig.3 create mode 100644 node/node-1.4.17-linux-arm64.dgst.sig.4 create mode 100644 node/node-1.4.17-linux-arm64.dgst.sig.6 create mode 100644 node/node-1.4.17-linux-arm64.dgst.sig.8 diff --git a/client/cmd/crossMint.go b/client/cmd/crossMint.go new file mode 100644 index 0000000..f2cf665 --- /dev/null +++ b/client/cmd/crossMint.go @@ -0,0 +1,209 @@ +package cmd + +import ( + "encoding/base64" + "encoding/hex" + "encoding/json" + "fmt" + "os" + "path/filepath" + "strings" + + "github.com/cloudflare/circl/sign/ed448" + libP2pCrypto "github.com/libp2p/go-libp2p/core/crypto" + "github.com/pkg/errors" + "github.com/spf13/cobra" + "go.uber.org/zap" + "source.quilibrium.com/quilibrium/monorepo/node/config" + "source.quilibrium.com/quilibrium/monorepo/node/keys" +) + +var crossMintCmd = &cobra.Command{ + Use: "cross-mint", + Short: "Signs a payload from the Quilibrium bridge to mint tokens on Ethereum L1 and prints the result to stdout", + Long: `Signs a payload from the Quilibrium bridge to mint tokens on Ethereum L1 and prints the result to stdout": + + cross-mint + + Payload – the hex-encoded payload from the Quilibrium bridge with optional 0x-prefix, must be specified + `, + Run: func(cmd *cobra.Command, args []string) { + if len(args) != 1 { + fmt.Printf("missing payload") + os.Exit(1) + } + + _, err := os.Stat(configDirectory) + if os.IsNotExist(err) { + fmt.Printf("config directory doesn't exist: %s", configDirectory) + os.Exit(1) + } + + config, err := config.LoadConfig(configDirectory, "") + if err != nil { + fmt.Printf("invalid config directory: %s", configDirectory) + os.Exit(1) + } + + rawPeerKey, err := hex.DecodeString(config.P2P.PeerPrivKey) + if err != nil { + panic(errors.Wrap(err, "cross mint")) + } + + peerKey, err := libP2pCrypto.UnmarshalEd448PrivateKey(rawPeerKey) + if err != nil { + panic(errors.Wrap(err, "cross mint")) + } + + rawPeerKey, err = peerKey.Raw() + if err != nil { + panic(errors.Wrap(err, "cross mint")) + } + + // TODO: support other key managers + // Get the proving key + // `config.Key.KeyStoreFile.Path` defaults to `.config/keys.yml`. + // We do our best here to make sure the configuration value is taken into + // account if it was changed. + if !filepath.IsAbs(config.Key.KeyStoreFile.Path) { + config.Key.KeyStoreFile.Path = filepath.Join( + configDirectory, + filepath.Base(config.Key.KeyStoreFile.Path), + ) + } + + logger, err := zap.NewProduction() + if err != nil { + panic(errors.Wrap(err, "cross mint")) + } + + fileKeyManager := keys.NewFileKeyManager(config.Key, logger) + provingKey, err := fileKeyManager.GetSigningKey(config.Engine.ProvingKeyId) + if err != nil { + panic(errors.Wrap(err, "cross mint")) + } + // Sign the payload + result, err := CrossMint(&CrossMintArgs{ + Payload: args[0], + PeerKey: rawPeerKey, + ProvingKey: provingKey.(ed448.PrivateKey), + }) + if err != nil { + panic(errors.Wrap(err, "error cross minting")) + } + // Print the result + jsonResult, err := json.Marshal(result) + if err != nil { + panic(errors.Wrap(err, "error marshaling result to json")) + } + fmt.Println(string(jsonResult)) + }, +} + +func init() { + rootCmd.AddCommand(crossMintCmd) +} + +// CrossMintArgs Arguments for the cross mint operation +type CrossMintArgs struct { + // Hex encoded payload with optional 0x prefix + Payload string + // The node's ed448 peer key + PeerKey ed448.PrivateKey + // The node's ed448 proving key + ProvingKey ed448.PrivateKey +} + +// CrossMintResult Result of the cross mint operation +type CrossMintResult struct { + // Base64 encoded peer public key + PeerPublicKey string `json:"peerPublicKey"` + // Base64 encoded signature of the payload with the peer private key + PeerSignature string `json:"peerSignature"` + // Base64 encoded prover public key + ProverPublicKey string `json:"proverPublicKey"` + // Base64 encoded signature of the payload with the prover private key + ProverSignature string `json:"proverSignature"` +} + +func CrossMint(args *CrossMintArgs) (*CrossMintResult, error) { + rawPayload, err := decodeHexString(args.Payload) + if err != nil { + return nil, errors.Wrap(err, "cross mint") + } + + peerSignature := ed448.Sign(args.PeerKey, rawPayload, "") + peerPubKey, ok := args.PeerKey.Public().(ed448.PublicKey) + if !ok { + return nil, errors.Wrap( + errors.New("error casting peer public key to ed448 public key"), + "cross mint", + ) + } + + provingSignature := ed448.Sign( + args.ProvingKey, + rawPayload, + "", + ) + provingPubKey, ok := args.ProvingKey.Public().(ed448.PublicKey) + if !ok { + return nil, errors.Wrap( + errors.New("error casting proving public key to ed448 public key"), + "cross mint", + ) + } + return &CrossMintResult{ + PeerPublicKey: base64.StdEncoding.EncodeToString(peerPubKey), + PeerSignature: base64.StdEncoding.EncodeToString(peerSignature), + ProverPublicKey: base64.StdEncoding.EncodeToString(provingPubKey), + ProverSignature: base64.StdEncoding.EncodeToString(provingSignature), + }, nil +} + +// VerifyCrossMint Verify a cross-mint message. Returns true if both signatures +// verify with the given public keys. +func VerifyCrossMint(payload string, result *CrossMintResult) (bool, error) { + payloadBytes, err := decodeHexString(payload) + if err != nil { + return false, err + } + peerPubKeyBytes, err := base64.StdEncoding.DecodeString(result.PeerPublicKey) + if err != nil { + return false, err + } + peerPubKey := ed448.PublicKey(peerPubKeyBytes) + peerSignature, err := base64.StdEncoding.DecodeString(result.PeerSignature) + if err != nil { + return false, err + } + proverPubKeyBytes, err := base64.StdEncoding.DecodeString( + result.ProverPublicKey, + ) + if err != nil { + return false, err + } + proverPubKey := ed448.PublicKey(proverPubKeyBytes) + proverSignature, err := base64.StdEncoding.DecodeString( + result.ProverSignature, + ) + if err != nil { + return false, err + } + peerSigOk := ed448.Verify(peerPubKey, payloadBytes, peerSignature, "") + proverSigOk := ed448.Verify(proverPubKey, payloadBytes, proverSignature, "") + return peerSigOk && proverSigOk, nil +} + +func decodeHexString(hexStr string) ([]byte, error) { + // Check if the string starts with '0x' and remove it + if strings.HasPrefix(hexStr, "0x") { + hexStr = hexStr[2:] + } + // Decode the hex string into bytes + data, err := hex.DecodeString(hexStr) + if err != nil { + return nil, errors.Wrap(err, "error decoding hex string") + } + return data, nil +} diff --git a/client/cmd/crossMint_test.go b/client/cmd/crossMint_test.go new file mode 100644 index 0000000..c0ffb77 --- /dev/null +++ b/client/cmd/crossMint_test.go @@ -0,0 +1,102 @@ +package cmd_test + +import ( + "crypto/rand" + "encoding/hex" + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" + "source.quilibrium.com/quilibrium/monorepo/client/cmd" +) + +var peerPrivKeyStr = "b14b843edf61a58870d3f96fe7dc8c6d0479af10aa16c45b102ddae75b278e8ef302edca36c71c1b4beb60e88088826c4da71ab0b5bf60cc92fc35078fa499f8a4accd51776ecc1fb520fdb20408133366077dadf4ff8a337fb42a19ff846e3609516a3f61c92ea4b9c2298a64b8bfae3780" +var provingPrivKeyStr = "690a5f08a2b3a0b787a8301c5fded376f7a070f5d89f66bf537d67fa1ed71a2b22ce166733b7d73ccf10a20ef0f04f163aae13883ff8270f93fed723c513e24e7f93d317b3257731887411bf820e169a0180c0cbf625efa67ff54cc22f1d97a2bd3f721705eeb4c2bf022f793954a798f700" + +func TestCrossMintRoundtrip(t *testing.T) { + peerPrivKey, err := hex.DecodeString(peerPrivKeyStr) + if err != nil { + t.Fatal(err) + } + provingPrivKey, err := hex.DecodeString(provingPrivKeyStr) + if err != nil { + t.Fatal(err) + } + payloadBytes := make([]byte, 32) + n, err := rand.Read(payloadBytes) + if err != nil { + t.Fatal(err) + } + if n != 32 { + t.Fatal("not enough bytes read") + } + payload := hex.EncodeToString(payloadBytes) + args := &cmd.CrossMintArgs{ + Payload: payload, + PeerKey: peerPrivKey, + ProvingKey: provingPrivKey, + } + result, err := cmd.CrossMint(args) + if err != nil { + t.Fatal(err) + } + verified, err := cmd.VerifyCrossMint(payload, result) + assert.True(t, verified, "cross mint verification failed") + // Switch the public keys to induce failure + tmp := result.PeerPublicKey + result.PeerPublicKey = result.ProverPublicKey + result.ProverPublicKey = tmp + verified, err = cmd.VerifyCrossMint(payload, result) + assert.False(t, verified, "cross mint verification should have failed") +} + +func TestCrossMint0xHex(t *testing.T) { + peerPrivKey, err := hex.DecodeString(peerPrivKeyStr) + if err != nil { + t.Fatal(err) + } + provingPrivKey, err := hex.DecodeString(provingPrivKeyStr) + if err != nil { + t.Fatal(err) + } + + payload := "0x1234" + args := &cmd.CrossMintArgs{ + Payload: payload, + PeerKey: peerPrivKey, + ProvingKey: provingPrivKey, + } + result, err := cmd.CrossMint(args) + if err != nil { + t.Fatal(err) + } + verified, err := cmd.VerifyCrossMint(payload, result) + assert.True(t, verified, "cross mint verification failed") +} + +func TestCrossMintFixture(t *testing.T) { + // Generated by running the `cross-mint` on the config of a newly started node with payload "1234" + rawJson := `{ + "peerPublicKey": "LLP/9tYlqIsV8AgTkyIpK9zjN+OfXNmYMDhmDeEagCMAhjfpPPWDyWDq9w6uMl9hGyDKYB10EV0A", + "peerSignature": "2ybumA9Vu5rnr5nYPcjehGo/PK6uNl4iVa0WXkEGms5ChqPFgOJX6Z5eng8U6VSHy85zbeZBukiANE3j2EBxrk4TAf4Z+5uuNMCQ6DasKpkgsxuIOGWKhOcBal2CDicinuMqafU3YOrXH9cck/OkjywA", + "proverPublicKey": "CAk3inpisW2Bpcar/z5/3dwjRSgFMRbhYhtCWdQThZZqDvOWFGgoMXLyKHw3B4+yEsmYIVaQZ/iA", + "proverSignature": "NZb7D2xNbCLlYGMUN1BiwBJL9Z6LbdRiMT1FpltBVpRNuoUNmncN++TWgJD6ngIv+VxEnWB0fhcAfAvrIlwNL0z8Ppur8mGMwedzJIm3pB22nAjUTDvNOvvczZWNbPZPyXcWco8SIC/aVaNmvsg//SgA" + }` + // load RawJson into a CrossMintResult + result := &cmd.CrossMintResult{} + err := json.Unmarshal([]byte(rawJson), result) + if err != nil { + t.Fatal(err) + } + ok, err := cmd.VerifyCrossMint("1234", result) + if err != nil { + t.Fatal(err) + } + assert.True(t, ok, "cross mint verification failed") + + bad, err := cmd.VerifyCrossMint("2234", result) + if err != nil { + t.Fatal(err) + } + assert.False(t, bad, "cross mint verification succeeded when it should have failed") +} diff --git a/client/go.mod b/client/go.mod index 99e242f..12c019d 100644 --- a/client/go.mod +++ b/client/go.mod @@ -2,9 +2,41 @@ module source.quilibrium.com/quilibrium/monorepo/client go 1.20 +replace github.com/libp2p/go-libp2p => ../go-libp2p + +replace source.quilibrium.com/quilibrium/monorepo/node => ../node + +replace source.quilibrium.com/quilibrium/monorepo/nekryptology => ../nekryptology + +require github.com/stretchr/testify v1.8.4 + require ( - github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/shopspring/decimal v1.4.0 // indirect - github.com/spf13/cobra v1.8.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect + filippo.io/edwards25519 v1.0.0-rc.1 // indirect + github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401 // indirect + github.com/bwesterb/go-ristretto v1.2.3 // indirect + github.com/consensys/gnark-crypto v0.5.3 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/minio/sha256-simd v1.0.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/crypto v0.18.0 // indirect + golang.org/x/sys v0.17.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + source.quilibrium.com/quilibrium/monorepo/nekryptology v0.0.0-00010101000000-000000000000 // indirect +) + +require ( + github.com/cloudflare/circl v1.3.8 + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/libp2p/go-libp2p v0.33.2 + github.com/pkg/errors v0.9.1 + github.com/shopspring/decimal v1.4.0 + github.com/spf13/cobra v1.8.0 + github.com/spf13/pflag v1.0.5 // indirect + go.uber.org/zap v1.27.0 + google.golang.org/protobuf v1.32.0 // indirect + source.quilibrium.com/quilibrium/monorepo/node v1.14.17 ) diff --git a/client/go.sum b/client/go.sum index e9f7d52..bf2ddfd 100644 --- a/client/go.sum +++ b/client/go.sum @@ -1,12 +1,122 @@ +filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= +filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401 h1:0tjUthKCaF8zwF9Qg7lfnep0xdo4n8WiFUfQPaMHX6g= +github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401/go.mod h1:Sv4JPQ3/M+teHz9Bo5jBpkNcP0x6r7rdihlNL/7tTAs= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= +github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= +github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= +github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/bwesterb/go-ristretto v1.2.3 h1:1w53tCkGhCQ5djbat3+MH0BAQ5Kfgbt56UZQ/JMzngw= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI= +github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU= +github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/gnark-crypto v0.5.3 h1:4xLFGZR3NWEH2zy+YzvzHicpToQR8FXFbfLNvpGB+rE= +github.com/consensys/gnark-crypto v0.5.3/go.mod h1:hOdPlWQV1gDLp7faZVeg8Y0iEPFaOUnCc4XeCCk96p0= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= +github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= +github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= +github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= +github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= +github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= +github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= +github.com/multiformats/go-multiaddr v0.11.0 h1:XqGyJ8ufbCE0HmTDwx2kPdsrQ36AGPZNZX6s6xfJH10= +github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= +github.com/multiformats/go-multicodec v0.9.0 h1:pb/dlPnzee/Sxv/j4PmkDRxCOi3hXTz3IbPKOXWJkmg= +github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U= +github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ= +golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +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= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= diff --git a/client/main.go b/client/main.go index 199d220..02403b3 100644 --- a/client/main.go +++ b/client/main.go @@ -1,12 +1,9 @@ package main import ( - "fmt" - "source.quilibrium.com/quilibrium/monorepo/client/cmd" ) func main() { - fmt.Println("Quilibrium RPC Client – Simulation Mode") cmd.Execute() } diff --git a/node/config/version.go b/node/config/version.go index b98b164..874a5e8 100644 --- a/node/config/version.go +++ b/node/config/version.go @@ -14,7 +14,7 @@ func GetMinimumVersion() []byte { } func GetVersion() []byte { - return []byte{0x01, 0x04, 0x10} + return []byte{0x01, 0x04, 0x11} } func GetVersionString() string { diff --git a/node/main.go b/node/main.go index e65c239..4f90cf1 100644 --- a/node/main.go +++ b/node/main.go @@ -592,13 +592,13 @@ func printLogo() { fmt.Println(" ########### ########## &###########") fmt.Println(" ########### ############## ###########") fmt.Println(" ########### ############## ##########&") - fmt.Println(" ########## ############## ##########") - fmt.Println("%########## ########## ##########") - fmt.Println("########## ##########") - fmt.Println("########## &#########") - fmt.Println("########## ####### ####### ##########") - fmt.Println("%######### &######################### ##########") - fmt.Println(" ########## ##############% ############## &##########") + fmt.Println(" ' ' ############## ##########") + fmt.Println("' ' ########## ##########") + fmt.Println("' ' ##########") + fmt.Println("' ' &#########") + fmt.Println("' ' ####### ####### ##########") + fmt.Println("' ' &######################### ##########") + fmt.Println(" ' ' ##############% ############## &##########") fmt.Println(" ' ' &############## ############### ##########") fmt.Println(" ' ' ############### ##############% ###########") fmt.Println(" ' '. ########## ############### ########") @@ -616,5 +616,5 @@ func printLogo() { func printVersion() { fmt.Println(" ") - fmt.Println(" Quilibrium Node - v" + config.GetVersionString() + " – Sunset") + fmt.Println(" Quilibrium Node - v" + config.GetVersionString() + " – Aurora") } diff --git a/node/node-1.4.17-darwin-arm64.dgst b/node/node-1.4.17-darwin-arm64.dgst new file mode 100644 index 0000000..6ff184c --- /dev/null +++ b/node/node-1.4.17-darwin-arm64.dgst @@ -0,0 +1 @@ +SHA3-256(node-1.4.17-darwin-arm64.bin)= c9eee4d66e1a98a9d63dbe54cbe043e1d7fc4014bcf7e78e46d56b33b4b7c9da diff --git a/node/node-1.4.17-darwin-arm64.dgst.sig.1 b/node/node-1.4.17-darwin-arm64.dgst.sig.1 new file mode 100644 index 0000000000000000000000000000000000000000..69190729090c7864db8e4cd32874130d4b055858 GIT binary patch literal 114 zcmV-&0FD0u3@v~7Y8gF|H#KarxZV+zR6iTM@T`52c8F)9RcTn6midJk6RYQ_ZTGkvg2}xC>Sw7ot%W5ROQ+7sJQFmq{i(&#m1I< U=dOhhqGeNke>F|u+=?$306+&dDgXcg literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-darwin-arm64.dgst.sig.11 b/node/node-1.4.17-darwin-arm64.dgst.sig.11 new file mode 100644 index 0000000000000000000000000000000000000000..e210296339c6725bd4244898ac708ffc7cff7126 GIT binary patch literal 114 zcmV-&0FD3nIb|oQbhhvI-M0(31?ajObkhiZ?d^-f4=dkCizdu0%=+=lAzJE~fNWCj zoey}aOJx>ZLvsp%B(<2h6YLh`FMR|U-rk15nISbiha5^)3vpyN$OPn>1=kRbQkm4a UzWPr!uVg#MWp+DOE)|m=u6X2%BRbufi)Hs0A(dI@Bjb+ literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-darwin-arm64.dgst.sig.13 b/node/node-1.4.17-darwin-arm64.dgst.sig.13 new file mode 100644 index 0000000000000000000000000000000000000000..a123f5b2aef3a210b3a300099509595be56e752b GIT binary patch literal 114 zcmV-&0FD14t{nAaxNCuY%o>uT6x-j?3iAS=w>ODi-njOQ=EAP)Md1mcE?UNd-col UxxkM}V_X+}9MdLu{gPrN0O(&kJpcdz literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-darwin-arm64.dgst.sig.15 b/node/node-1.4.17-darwin-arm64.dgst.sig.15 new file mode 100644 index 0000000000000000000000000000000000000000..92e8a15ab2f1da7aa8f1560173a855e18aa272bb GIT binary patch literal 114 zcmV-&0FD3q>PkJ7y#wTplGvG1b@WCF+JnTJkb~1&2yGe9k~P6NK21JEXaj;5>d~o@$p80s&=kDcY0S#(lV2eg94`nT Uc>3ttm557J(p4>01eSR8~^|S literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-darwin-arm64.dgst.sig.3 b/node/node-1.4.17-darwin-arm64.dgst.sig.3 new file mode 100644 index 0000000000000000000000000000000000000000..42363ab0cd93426c758babbf6ad8728f1676f718 GIT binary patch literal 114 zcmV-&0FD28CF?u`RNh!l2N=Q?w49G2!4HP6Y5WFmCOmaWUf9NG$7{AvKJnQC$&7cS zB#Qf$4k(|ZBI|g7_HH+(OsQC${M-JDKQG{_rt7Y+aK$j`r1lK7K^_#ew4sp98=KyR U?rMNDAiiN`2Ij;59x6T}0A(OJZ2$lO literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-darwin-arm64.dgst.sig.4 b/node/node-1.4.17-darwin-arm64.dgst.sig.4 new file mode 100644 index 0000000000000000000000000000000000000000..6337ff168452bd15c32033c24c37637da4b46427 GIT binary patch literal 114 zcmV-&0FD0{Vyw6_Fh}`hnWGbrfkJwv>EfoQkV}2B-!?1EUM(BQN=3Mzl_*Qp^AgtW z)-wtyxdRhMJW%$4VH6dA^2(h9O+dUYRJkzZB)t)eT= UR8U%ovSe*RedW6&gDsy70N9c;XaE2J literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-darwin-arm64.dgst.sig.6 b/node/node-1.4.17-darwin-arm64.dgst.sig.6 new file mode 100644 index 0000000000000000000000000000000000000000..8789ad1f3ef8075a0418f9b598831b6958b0d0bc GIT binary patch literal 114 zcmV-&0FD2yw9H5b`j=1W34sdF%8(Actofh2ay7ybd*_NQIW8A+XkBcjp&+$r14(uNjJ3F(h#j+^rFtj;JJdQ4BB1`utY62m$b|C zpHA33y#g;5g^A>V|Kpuxq=WCiAAC~bLic73$^8 z&&BgT)5?I`U2v`dAh@Jkq(`D3vB~r|Y97vDUG!$34wk+;N#c4qI5S0_^KFO7it}D- U%F4)Ek#k@Yqg2H@I?0y-0QfOEIsgCw literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-linux-amd64.dgst.sig.13 b/node/node-1.4.17-linux-amd64.dgst.sig.13 new file mode 100644 index 0000000000000000000000000000000000000000..86c462fb6807250a113523232f41e8ef498a86f5 GIT binary patch literal 114 zcmV-&0FD0_jj+JldycB-A^&e&aFiJV-$2 zSRV4eNp5&`**0$g-vcan3v_gA<>dnCvDk&a!T1zvbJr^apnvrBpTRy=CeLDyx1WYX UveH4O$F*~gS=RC~nsQ?*0ANTv5C8xG literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-linux-amd64.dgst.sig.14 b/node/node-1.4.17-linux-amd64.dgst.sig.14 new file mode 100644 index 0000000000000000000000000000000000000000..a5ad292a6b7aecf3823a8fd721309fd642866efe GIT binary patch literal 114 zcmV-&0FD1!22YEK`;e0-jt4>-N;UlY{lB&s1yNkd+s9lGPks-XAf>k-9iWw?e3+pF z^Z%zpGzrBe=nZ**FwIx(sc4}plehFXyhY_Qb4YyOsWKzofq>1iH_|S!ZOCz#!}Hqarr zd#?I*+6^S=KOzi(%Qk2)+|}tVP8@{4Tw2bGfnVbwXP70?+11xWBb68OM{GPTXQ(Py UYwZ6?2XL&12AetyNYS+q08Df>O#lD@ literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-linux-amd64.dgst.sig.16 b/node/node-1.4.17-linux-amd64.dgst.sig.16 new file mode 100644 index 0000000000000000000000000000000000000000..b1ba48a1823e303360fa6bf367e93a6ead879edf GIT binary patch literal 114 zcmV-&0FD2)Pq22KX#rDLF;YAa6(fzvV<3`be6#bgCb2xFZBtU^N&k2{avT~|hNOlp ze~Klc1sE3)lv^QydbQRFx{g;#f^(f0Dy_zJT(@?Z%0+X?- U2JHK7bQ|aIj@#hh)W^*@06keYxc~qF literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-linux-amd64.dgst.sig.3 b/node/node-1.4.17-linux-amd64.dgst.sig.3 new file mode 100644 index 0000000000000000000000000000000000000000..0cd377cca2f2bc822dca4586c8c7ab146617f71f GIT binary patch literal 114 zcmV-&0FD1QoFwU_Mv5cK<>(=`nA{l=`gh97+qP%T1E0N*SUDYkRz9eu$;V0Eid^ca zN5URBmBXlhdH2$3)|#<_qc UVXFd`n&M}jXPwl|p)61q0I literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-linux-amd64.dgst.sig.4 b/node/node-1.4.17-linux-amd64.dgst.sig.4 new file mode 100644 index 0000000000000000000000000000000000000000..36eeb738b5ea03a816e8ca77d49a0bdf21b54b93 GIT binary patch literal 114 zcmV-&0FD1W4BLAwt`1J{$B{ZsUCq4ynKq`sUr&B^64h{mHou2u|5W72V8fzPMq=?N zEaF*O1e^l7pKU3 UN0mXFf!nItc#VfW)Hrk$0ExdhTL1t6 literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-linux-amd64.dgst.sig.6 b/node/node-1.4.17-linux-amd64.dgst.sig.6 new file mode 100644 index 0000000000000000000000000000000000000000..21938e7f22ae233304c7c6fc6763ede6c96d34d6 GIT binary patch literal 114 zcmV-&0FD1RR)tOKq@WtNN#Wkbdl&+EGLk6URf*J2zL729D~`@(#WS-e5eZ>{bNn@H z=v`JHA9Dn@`Gz2XP*xC#<-J09rscm;e9( literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-linux-amd64.dgst.sig.8 b/node/node-1.4.17-linux-amd64.dgst.sig.8 new file mode 100644 index 0000000000000000000000000000000000000000..746a0806be1336e3951b1c4feae4df15d5047546 GIT binary patch literal 114 zcmV-&0FD1*1~*Ixfw7rXnbScCCnm1cFpBG>Np5JcXY}pPuebT@<&+(w)3)sYjaWno zP0XpB;iKUqR z*z&?y@2T3oXKMq1vpp*e_mz2@j*wMmCyNu>rOUAm1`IF}F~GLoTrm&&v%UIt!WU@a!a? zPnOd^ninpeN#jX?#;_;q(RQ<~=3i%0Bp((_0Q>SLeY&;`GJV2-@Ab{Eyt<05XJQ$q UPf5P4QX}B-)4LFyqbQmK0Lc41Q~&?~ literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-linux-arm64.dgst.sig.12 b/node/node-1.4.17-linux-arm64.dgst.sig.12 new file mode 100644 index 0000000000000000000000000000000000000000..a0546774e40cec18d6c42e2c2143dbabf26a0d75 GIT binary patch literal 114 zcmV-&0FD0}CGiYQA~(s<)(do}j_~8(R>UJjIp1#p)m;#uQ9GeuBEOE?ba}|W2TgOe zncP;a>nWYp#5%Wth+reaQXe3=q&zr3) zsblo?dcF#hd_!yiw=ZNO@Cg_;mk@AbT1vLZ7e0GlH?B>(^b literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-linux-arm64.dgst.sig.14 b/node/node-1.4.17-linux-arm64.dgst.sig.14 new file mode 100644 index 0000000000000000000000000000000000000000..cc80d2454f87cbbd303b7887ca6e1679be2bb98f GIT binary patch literal 114 zcmV-&0FD2{n@h8g-uj`3`z}d%Qipo8K^Izdbfgc`YBx`E%d5;^!VV2$G}BtJxTJ<7 zeyoAX&>}5RS`o?stjc$PG*zC3LOoh})`1QDLLmo9LCu2A=9-rW>vapy62f+yonNjr UV!b;x7m8;G__*jbr__!y0CCzj1poj5 literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-linux-arm64.dgst.sig.15 b/node/node-1.4.17-linux-arm64.dgst.sig.15 new file mode 100644 index 0000000000000000000000000000000000000000..a0833d1332e9f9dfce74433ef5137204d40e5ab0 GIT binary patch literal 114 zcmV-&0FD25@ZDcb-0)#@ikCRe3i?3;BBI0 z_0cz-Pfm(Hxb-1`fr9|u&aIdejBxY>=6FyGv!2qeoGG$ U@;0PH*bLZZ@f`tz|EK>904Z!c>Hq)$ literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-linux-arm64.dgst.sig.16 b/node/node-1.4.17-linux-arm64.dgst.sig.16 new file mode 100644 index 0000000000000000000000000000000000000000..85fb52eb743260de7eb05d20965ced0ec95f8d4a GIT binary patch literal 114 zcmV-&0FD1CF9y!*NSa_+!Qd_$>sBTAv)|Z9C?oj*$6N~>+UH+-qyQU_ni+Kq5#71> zCHRfo8aJ6L$`b{E(k|X>zG%7Srl}_N(k<8^L#M`JD{iiTmlSw!only|F(bBL04ISpwg3PC literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-linux-arm64.dgst.sig.3 b/node/node-1.4.17-linux-arm64.dgst.sig.3 new file mode 100644 index 0000000000000000000000000000000000000000..11cf43af958e5eda4cb5902db377e89852b4e2b2 GIT binary patch literal 114 zcmV-&0FD1aqmx;nl(BIWgxJtG0fO?fO$uG35RpsQt8M4KpLcivzmsX{DB UHcDoEw*FV|?fFAzEFD_~009p^4gdfE literal 0 HcmV?d00001 diff --git a/node/node-1.4.17-linux-arm64.dgst.sig.4 b/node/node-1.4.17-linux-arm64.dgst.sig.4 new file mode 100644 index 0000000000000000000000000000000000000000..112929f787a7c939f478f2c8835cf272c784190d GIT binary patch literal 114 zcmV-&0FD3ij$eq6M|qFm-lTggX5E^q_>URzQ<3~QvcIVU37-S`dtIAGUpmYz;fO`< z(By@MlI$Hn-5ptgzO5^g1?n>!URme_i8S`=^ z10auxZ%>R*{PGz95CBzsIZPB`I_j!DvvDh(l$7JS_^S#o!0XX~z UpP-#`zH