Skip to content
Snippets Groups Projects
Unverified Commit df5b6b25 authored by Jonas Theis's avatar Jonas Theis Committed by GitHub
Browse files

Uniform usage of base58 over base64 and hex (#452)

* Adjust autopeering/neighbors endpoint to display public key in default (base58)

* Allow to specify node seed as base58 or base64 + add flag to show seed

* Interpret entry node public key as base58

* Adjust integration tests to use base58 instead of base64

* Hex to base58

* Remove flag to print seed

* Update hive.go
parent b457ebff
No related branches found
No related tags found
No related merge requests found
Showing
with 63 additions and 62 deletions
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
}, },
"autopeering": { "autopeering": {
"entryNodes": [ "entryNodes": [
"MRCJTGX9x+PPiT3um1DQSHXvALaUg/tCH/oQr6mliGo=@35.246.104.243:14626" "4JXbv7u61TPfDkN63KK2UxDquuKsewZBMnBujTvXnmHK@35.246.104.243:14626"
], ],
"port": 14626 "port": 14626
}, },
......
...@@ -11,7 +11,7 @@ require ( ...@@ -11,7 +11,7 @@ require (
github.com/gobuffalo/packr/v2 v2.7.1 github.com/gobuffalo/packr/v2 v2.7.1
github.com/golang/protobuf v1.3.5 github.com/golang/protobuf v1.3.5
github.com/gorilla/websocket v1.4.1 github.com/gorilla/websocket v1.4.1
github.com/iotaledger/hive.go v0.0.0-20200525142347-543f24c486b8 github.com/iotaledger/hive.go v0.0.0-20200608165853-97365812038c
github.com/iotaledger/iota.go v1.0.0-beta.14 github.com/iotaledger/iota.go v1.0.0-beta.14
github.com/labstack/echo v3.3.10+incompatible github.com/labstack/echo v3.3.10+incompatible
github.com/labstack/gommon v0.3.0 github.com/labstack/gommon v0.3.0
......
...@@ -139,8 +139,8 @@ github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T ...@@ -139,8 +139,8 @@ github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/iotaledger/hive.go v0.0.0-20200525142347-543f24c486b8 h1:QRVEyknRx6lCrHtk6BbBLcs16nQ8Ozbe4OSxV8XYAr8= github.com/iotaledger/hive.go v0.0.0-20200608165853-97365812038c h1:092HC7xRUSHpoXoAz2oTNWzfHDMMu3tEZsg2RF131hA=
github.com/iotaledger/hive.go v0.0.0-20200525142347-543f24c486b8/go.mod h1:zwZhaE4ZeglpTrbmbwdnVPMI5XdRu2RmByi3Qn0ztmU= github.com/iotaledger/hive.go v0.0.0-20200608165853-97365812038c/go.mod h1:zwZhaE4ZeglpTrbmbwdnVPMI5XdRu2RmByi3Qn0ztmU=
github.com/iotaledger/iota.go v1.0.0-beta.9/go.mod h1:F6WBmYd98mVjAmmPVYhnxg8NNIWCjjH8VWT9qvv3Rc8= github.com/iotaledger/iota.go v1.0.0-beta.9/go.mod h1:F6WBmYd98mVjAmmPVYhnxg8NNIWCjjH8VWT9qvv3Rc8=
github.com/iotaledger/iota.go v1.0.0-beta.14 h1:Oeb28MfBuJEeXcGrLhTCJFtbsnc8y1u7xidsAmiOD5A= github.com/iotaledger/iota.go v1.0.0-beta.14 h1:Oeb28MfBuJEeXcGrLhTCJFtbsnc8y1u7xidsAmiOD5A=
github.com/iotaledger/iota.go v1.0.0-beta.14/go.mod h1:F6WBmYd98mVjAmmPVYhnxg8NNIWCjjH8VWT9qvv3Rc8= github.com/iotaledger/iota.go v1.0.0-beta.14/go.mod h1:F6WBmYd98mVjAmmPVYhnxg8NNIWCjjH8VWT9qvv3Rc8=
......
package autopeering package autopeering
import ( import (
"encoding/base64"
"errors" "errors"
"fmt" "fmt"
"hash/fnv" "hash/fnv"
...@@ -21,6 +20,7 @@ import ( ...@@ -21,6 +20,7 @@ import (
"github.com/iotaledger/hive.go/crypto/ed25519" "github.com/iotaledger/hive.go/crypto/ed25519"
"github.com/iotaledger/hive.go/identity" "github.com/iotaledger/hive.go/identity"
"github.com/iotaledger/hive.go/logger" "github.com/iotaledger/hive.go/logger"
"github.com/mr-tron/base58"
) )
// autopeering constants // autopeering constants
...@@ -181,7 +181,7 @@ func parseEntryNodes() (result []*peer.Peer, err error) { ...@@ -181,7 +181,7 @@ func parseEntryNodes() (result []*peer.Peer, err error) {
if len(parts) != 2 { if len(parts) != 2 {
return nil, fmt.Errorf("%w: master node parts must be 2, is %d", ErrParsingMasterNode, len(parts)) return nil, fmt.Errorf("%w: master node parts must be 2, is %d", ErrParsingMasterNode, len(parts))
} }
pubKey, err := base64.StdEncoding.DecodeString(parts[0]) pubKey, err := base58.Decode(parts[0])
if err != nil { if err != nil {
return nil, fmt.Errorf("%w: invalid public key: %s", ErrParsingMasterNode, err) return nil, fmt.Errorf("%w: invalid public key: %s", ErrParsingMasterNode, err)
} }
......
package local package local
import ( import (
"crypto/ed25519"
"encoding/base64" "encoding/base64"
"fmt"
"net" "net"
"strings" "strings"
"sync" "sync"
...@@ -12,7 +12,9 @@ import ( ...@@ -12,7 +12,9 @@ import (
"github.com/iotaledger/goshimmer/plugins/database" "github.com/iotaledger/goshimmer/plugins/database"
"github.com/iotaledger/hive.go/autopeering/peer" "github.com/iotaledger/hive.go/autopeering/peer"
"github.com/iotaledger/hive.go/autopeering/peer/service" "github.com/iotaledger/hive.go/autopeering/peer/service"
"github.com/iotaledger/hive.go/crypto/ed25519"
"github.com/iotaledger/hive.go/logger" "github.com/iotaledger/hive.go/logger"
"github.com/mr-tron/base58"
) )
var ( var (
...@@ -49,7 +51,17 @@ func configureLocal() *peer.Local { ...@@ -49,7 +51,17 @@ func configureLocal() *peer.Local {
// set the private key from the seed provided in the config // set the private key from the seed provided in the config
var seed [][]byte var seed [][]byte
if str := config.Node.GetString(CfgSeed); str != "" { if str := config.Node.GetString(CfgSeed); str != "" {
bytes, err := base64.StdEncoding.DecodeString(str) var bytes []byte
var err error
if strings.HasPrefix(str, "base58:") {
bytes, err = base58.Decode(str[7:])
} else if strings.HasPrefix(str, "base64:") {
bytes, err = base64.StdEncoding.DecodeString(str[7:])
} else {
err = fmt.Errorf("neither base58 nor base64 prefix provided")
}
if err != nil { if err != nil {
log.Fatalf("Invalid %s: %s", CfgSeed, err) log.Fatalf("Invalid %s: %s", CfgSeed, err)
} }
...@@ -65,7 +77,7 @@ func configureLocal() *peer.Local { ...@@ -65,7 +77,7 @@ func configureLocal() *peer.Local {
// the private key seed of the current local can be returned the following way: // the private key seed of the current local can be returned the following way:
// key, _ := peerDB.LocalPrivateKey() // key, _ := peerDB.LocalPrivateKey()
// fmt.Println(base64.StdEncoding.EncodeToString(ed25519.PrivateKey(key).Seed())) // fmt.Printf("Seed: base58:%s\n", key.Seed().String())
local, err := peer.NewLocal(peeringIP, services, peerDB, seed...) local, err := peer.NewLocal(peeringIP, services, peerDB, seed...)
if err != nil { if err != nil {
......
...@@ -19,5 +19,5 @@ func init() { ...@@ -19,5 +19,5 @@ func init() {
flag.String(CfgBind, "0.0.0.0", "bind address for global services such as autopeering and gossip") flag.String(CfgBind, "0.0.0.0", "bind address for global services such as autopeering and gossip")
flag.String(CfgExternal, "auto", "external IP address under which the node is reachable; or 'auto' to determine it automatically") flag.String(CfgExternal, "auto", "external IP address under which the node is reachable; or 'auto' to determine it automatically")
flag.Int(CfgPort, 14626, "UDP port for incoming peering requests") flag.Int(CfgPort, 14626, "UDP port for incoming peering requests")
flag.BytesBase64(CfgSeed, nil, "private key seed used to derive the node identity; optional Base64 encoded 256-bit string") flag.String(CfgSeed, "", "private key seed used to derive the node identity; optional base58 or base64 encoded 256-bit string. Prefix with 'base58:' or 'base64', respectively")
} }
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
package remotelog package remotelog
import ( import (
"encoding/hex"
"encoding/json" "encoding/json"
"fmt" "fmt"
"net" "net"
...@@ -78,7 +77,7 @@ func configure(plugin *node.Plugin) { ...@@ -78,7 +77,7 @@ func configure(plugin *node.Plugin) {
conn = c conn = c
if local.GetInstance() != nil { if local.GetInstance() != nil {
myID = hex.EncodeToString(local.GetInstance().ID().Bytes()) myID = local.GetInstance().ID().String()
} }
getGitInfo() getGitInfo()
......
package autopeering package autopeering
import ( import (
"encoding/base64"
"net" "net"
"net/http" "net/http"
"strconv" "strconv"
...@@ -27,41 +26,36 @@ func configure(plugin *node.Plugin) { ...@@ -27,41 +26,36 @@ func configure(plugin *node.Plugin) {
// getNeighbors returns the chosen and accepted neighbors of the node // getNeighbors returns the chosen and accepted neighbors of the node
func getNeighbors(c echo.Context) error { func getNeighbors(c echo.Context) error {
chosen := []Neighbor{} var chosen []Neighbor
accepted := []Neighbor{} var accepted []Neighbor
knownPeers := []Neighbor{} var knownPeers []Neighbor
if c.QueryParam("known") == "1" { if c.QueryParam("known") == "1" {
for _, peer := range autopeering.Discovery().GetVerifiedPeers() { for _, p := range autopeering.Discovery().GetVerifiedPeers() {
n := Neighbor{ knownPeers = append(knownPeers, createNeighborFromPeer(p))
ID: peer.ID().String(),
PublicKey: base64.StdEncoding.EncodeToString(peer.PublicKey().Bytes()),
}
n.Services = getServices(peer)
knownPeers = append(knownPeers, n)
} }
} }
for _, peer := range autopeering.Selection().GetOutgoingNeighbors() { for _, p := range autopeering.Selection().GetOutgoingNeighbors() {
n := Neighbor{ chosen = append(chosen, createNeighborFromPeer(p))
ID: peer.ID().String(),
PublicKey: base64.StdEncoding.EncodeToString(peer.PublicKey().Bytes()),
}
n.Services = getServices(peer)
chosen = append(chosen, n)
} }
for _, peer := range autopeering.Selection().GetIncomingNeighbors() { for _, p := range autopeering.Selection().GetIncomingNeighbors() {
n := Neighbor{ accepted = append(accepted, createNeighborFromPeer(p))
ID: peer.ID().String(),
PublicKey: base64.StdEncoding.EncodeToString(peer.PublicKey().Bytes()),
}
n.Services = getServices(peer)
accepted = append(accepted, n)
} }
return c.JSON(http.StatusOK, Response{KnownPeers: knownPeers, Chosen: chosen, Accepted: accepted}) return c.JSON(http.StatusOK, Response{KnownPeers: knownPeers, Chosen: chosen, Accepted: accepted})
} }
func createNeighborFromPeer(p *peer.Peer) Neighbor {
n := Neighbor{
ID: p.ID().String(),
PublicKey: p.PublicKey().String(),
}
n.Services = getServices(p)
return n
}
// Response contains information of the autopeering. // Response contains information of the autopeering.
type Response struct { type Response struct {
KnownPeers []Neighbor `json:"known,omitempty"` KnownPeers []Neighbor `json:"known,omitempty"`
......
...@@ -86,7 +86,7 @@ type Response struct { ...@@ -86,7 +86,7 @@ type Response struct {
Version string `json:"version,omitempty"` Version string `json:"version,omitempty"`
// whether the node is synchronized // whether the node is synchronized
Synced bool `json:"synced"` Synced bool `json:"synced"`
// identity ID of the node encoded in hex and truncated to its first 8 bytes // identity ID of the node encoded in base58 and truncated to its first 8 bytes
IdentityID string `json:"identityID,omitempty"` IdentityID string `json:"identityID,omitempty"`
// public key of the node encoded in base58 // public key of the node encoded in base58
PublicKey string `json:"publickey,omitempty"` PublicKey string `json:"publickey,omitempty"`
......
...@@ -8,7 +8,7 @@ services: ...@@ -8,7 +8,7 @@ services:
command: > command: >
--config-dir=/tmp --config-dir=/tmp
--database.directory=/tmp/mainnetdb --database.directory=/tmp/mainnetdb
--autopeering.seed=uuDCzsjyLNQ17/7fWKPNMYmr4IWuaVRf7qKqRL0v/6c= --autopeering.seed=base58:8kPPCqaJFAt8BJtx6qw5PN8bKEM2XKXor6PxkmHf6bcr
--autopeering.entryNodes= --autopeering.entryNodes=
--analysis.server.bindAddress=0.0.0.0:1888 --analysis.server.bindAddress=0.0.0.0:1888
--analysis.dashboard.bindAddress=0.0.0.0:9000 --analysis.dashboard.bindAddress=0.0.0.0:9000
......
...@@ -63,7 +63,7 @@ func (d *DockerContainer) CreateGoShimmerEntryNode(name string, seed string) err ...@@ -63,7 +63,7 @@ func (d *DockerContainer) CreateGoShimmerEntryNode(name string, seed string) err
"--logger.level=debug", "--logger.level=debug",
fmt.Sprintf("--node.disablePlugins=%s", disabledPluginsEntryNode), fmt.Sprintf("--node.disablePlugins=%s", disabledPluginsEntryNode),
"--autopeering.entryNodes=", "--autopeering.entryNodes=",
fmt.Sprintf("--autopeering.seed=%s", seed), fmt.Sprintf("--autopeering.seed=base58:%s", seed),
}, },
} }
...@@ -90,7 +90,7 @@ func (d *DockerContainer) CreateGoShimmerPeer(config GoShimmerConfig) error { ...@@ -90,7 +90,7 @@ func (d *DockerContainer) CreateGoShimmerPeer(config GoShimmerConfig) error {
}()), }()),
fmt.Sprintf("--bootstrap.initialIssuance.timePeriodSec=%d", config.BootstrapInitialIssuanceTimePeriodSec), fmt.Sprintf("--bootstrap.initialIssuance.timePeriodSec=%d", config.BootstrapInitialIssuanceTimePeriodSec),
"--webapi.bindAddress=0.0.0.0:8080", "--webapi.bindAddress=0.0.0.0:8080",
fmt.Sprintf("--autopeering.seed=%s", config.Seed), fmt.Sprintf("--autopeering.seed=base58:%s", config.Seed),
fmt.Sprintf("--autopeering.entryNodes=%s@%s:14626", config.EntryNodePublicKey, config.EntryNodeHost), fmt.Sprintf("--autopeering.entryNodes=%s@%s:14626", config.EntryNodePublicKey, config.EntryNodeHost),
fmt.Sprintf("--drng.instanceId=%d", config.DRNGInstance), fmt.Sprintf("--drng.instanceId=%d", config.DRNGInstance),
fmt.Sprintf("--drng.threshold=%d", config.DRNGThreshold), fmt.Sprintf("--drng.threshold=%d", config.DRNGThreshold),
......
...@@ -7,7 +7,7 @@ import ( ...@@ -7,7 +7,7 @@ import (
"time" "time"
"github.com/docker/docker/client" "github.com/docker/docker/client"
hive_ed25519 "github.com/iotaledger/hive.go/crypto/ed25519" "github.com/iotaledger/hive.go/crypto/ed25519"
"github.com/iotaledger/hive.go/identity" "github.com/iotaledger/hive.go/identity"
) )
...@@ -31,7 +31,7 @@ func newDRNGNetwork(dockerClient *client.Client, name string, tester *DockerCont ...@@ -31,7 +31,7 @@ func newDRNGNetwork(dockerClient *client.Client, name string, tester *DockerCont
} }
// CreatePeer creates a new peer/GoShimmer node in the network and returns it. // CreatePeer creates a new peer/GoShimmer node in the network and returns it.
func (n *DRNGNetwork) CreatePeer(c GoShimmerConfig, publicKey hive_ed25519.PublicKey) (*Peer, error) { func (n *DRNGNetwork) CreatePeer(c GoShimmerConfig, publicKey ed25519.PublicKey) (*Peer, error) {
name := n.network.namePrefix(fmt.Sprintf("%s%d", containerNameReplica, len(n.network.peers))) name := n.network.namePrefix(fmt.Sprintf("%s%d", containerNameReplica, len(n.network.peers)))
config := c config := c
......
...@@ -4,8 +4,6 @@ ...@@ -4,8 +4,6 @@
package framework package framework
import ( import (
"crypto/ed25519"
"encoding/base64"
"encoding/hex" "encoding/hex"
"fmt" "fmt"
"strings" "strings"
...@@ -14,7 +12,7 @@ import ( ...@@ -14,7 +12,7 @@ import (
"github.com/docker/docker/api/types/strslice" "github.com/docker/docker/api/types/strslice"
"github.com/docker/docker/client" "github.com/docker/docker/client"
hive_ed25519 "github.com/iotaledger/hive.go/crypto/ed25519" "github.com/iotaledger/hive.go/crypto/ed25519"
) )
var ( var (
...@@ -210,12 +208,12 @@ func (f *Framework) CreateDRNGNetwork(name string, members, peers, minimumNeighb ...@@ -210,12 +208,12 @@ func (f *Framework) CreateDRNGNetwork(name string, members, peers, minimumNeighb
} }
// create GoShimmer identities // create GoShimmer identities
pubKeys := make([]hive_ed25519.PublicKey, peers) pubKeys := make([]ed25519.PublicKey, peers)
privKeys := make([]hive_ed25519.PrivateKey, peers) privKeys := make([]ed25519.PrivateKey, peers)
var drngCommittee string var drngCommittee string
for i := 0; i < peers; i++ { for i := 0; i < peers; i++ {
pubKeys[i], privKeys[i], err = hive_ed25519.GenerateKey() pubKeys[i], privKeys[i], err = ed25519.GenerateKey()
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -238,7 +236,7 @@ func (f *Framework) CreateDRNGNetwork(name string, members, peers, minimumNeighb ...@@ -238,7 +236,7 @@ func (f *Framework) CreateDRNGNetwork(name string, members, peers, minimumNeighb
// create peers/GoShimmer nodes // create peers/GoShimmer nodes
for i := 0; i < peers; i++ { for i := 0; i < peers; i++ {
config.Bootstrap = i == 0 config.Bootstrap = i == 0
config.Seed = base64.StdEncoding.EncodeToString(ed25519.PrivateKey(privKeys[i].Bytes()).Seed()) config.Seed = privKeys[i].Seed().String()
if _, err = drng.CreatePeer(config, pubKeys[i]); err != nil { if _, err = drng.CreatePeer(config, pubKeys[i]); err != nil {
return nil, err return nil, err
} }
......
...@@ -2,8 +2,6 @@ package framework ...@@ -2,8 +2,6 @@ package framework
import ( import (
"context" "context"
"crypto/ed25519"
"encoding/base64"
"fmt" "fmt"
"log" "log"
"math/rand" "math/rand"
...@@ -11,7 +9,7 @@ import ( ...@@ -11,7 +9,7 @@ import (
"github.com/docker/docker/api/types" "github.com/docker/docker/api/types"
"github.com/docker/docker/client" "github.com/docker/docker/client"
hive_ed25519 "github.com/iotaledger/hive.go/crypto/ed25519" "github.com/iotaledger/hive.go/crypto/ed25519"
"github.com/iotaledger/hive.go/identity" "github.com/iotaledger/hive.go/identity"
) )
...@@ -57,13 +55,13 @@ func newNetwork(dockerClient *client.Client, name string, tester *DockerContaine ...@@ -57,13 +55,13 @@ func newNetwork(dockerClient *client.Client, name string, tester *DockerContaine
// createEntryNode creates the network's entry node. // createEntryNode creates the network's entry node.
func (n *Network) createEntryNode() error { func (n *Network) createEntryNode() error {
// create identity // create identity
publicKey, privateKey, err := hive_ed25519.GenerateKey() publicKey, privateKey, err := ed25519.GenerateKey()
if err != nil { if err != nil {
return err return err
} }
n.entryNodeIdentity = identity.New(publicKey) n.entryNodeIdentity = identity.New(publicKey)
seed := base64.StdEncoding.EncodeToString(ed25519.PrivateKey(privateKey.Bytes()).Seed()) seed := privateKey.Seed().String()
// create entry node container // create entry node container
n.entryNode = NewDockerContainer(n.dockerClient) n.entryNode = NewDockerContainer(n.dockerClient)
...@@ -89,11 +87,11 @@ func (n *Network) CreatePeer(c GoShimmerConfig) (*Peer, error) { ...@@ -89,11 +87,11 @@ func (n *Network) CreatePeer(c GoShimmerConfig) (*Peer, error) {
name := n.namePrefix(fmt.Sprintf("%s%d", containerNameReplica, len(n.peers))) name := n.namePrefix(fmt.Sprintf("%s%d", containerNameReplica, len(n.peers)))
// create identity // create identity
publicKey, privateKey, err := hive_ed25519.GenerateKey() publicKey, privateKey, err := ed25519.GenerateKey()
if err != nil { if err != nil {
return nil, err return nil, err
} }
seed := base64.StdEncoding.EncodeToString(ed25519.PrivateKey(privateKey.Bytes()).Seed()) seed := privateKey.Seed().String()
config := c config := c
config.Name = name config.Name = name
...@@ -260,9 +258,9 @@ func (n *Network) namePrefix(suffix string) string { ...@@ -260,9 +258,9 @@ func (n *Network) namePrefix(suffix string) string {
return fmt.Sprintf("%s-%s", n.name, suffix) return fmt.Sprintf("%s-%s", n.name, suffix)
} }
// entryNodePublicKey returns the entry node's public key encoded as base64 // entryNodePublicKey returns the entry node's public key encoded as base58
func (n *Network) entryNodePublicKey() string { func (n *Network) entryNodePublicKey() string {
return base64.StdEncoding.EncodeToString(n.entryNodeIdentity.PublicKey().Bytes()) return n.entryNodeIdentity.PublicKey().String()
} }
// Peers returns all available peers in the network. // Peers returns all available peers in the network.
......
...@@ -10,7 +10,7 @@ require ( ...@@ -10,7 +10,7 @@ require (
github.com/docker/go-units v0.4.0 // indirect github.com/docker/go-units v0.4.0 // indirect
github.com/drand/drand v0.8.1 github.com/drand/drand v0.8.1
github.com/iotaledger/goshimmer v0.1.3 github.com/iotaledger/goshimmer v0.1.3
github.com/iotaledger/hive.go v0.0.0-20200525142347-543f24c486b8 github.com/iotaledger/hive.go v0.0.0-20200608165853-97365812038c
github.com/opencontainers/go-digest v1.0.0-rc1 // indirect github.com/opencontainers/go-digest v1.0.0-rc1 // indirect
github.com/stretchr/testify v1.5.1 github.com/stretchr/testify v1.5.1
) )
......
...@@ -138,8 +138,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= ...@@ -138,8 +138,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/iotaledger/hive.go v0.0.0-20200525142347-543f24c486b8 h1:QRVEyknRx6lCrHtk6BbBLcs16nQ8Ozbe4OSxV8XYAr8= github.com/iotaledger/hive.go v0.0.0-20200608165853-97365812038c h1:092HC7xRUSHpoXoAz2oTNWzfHDMMu3tEZsg2RF131hA=
github.com/iotaledger/hive.go v0.0.0-20200525142347-543f24c486b8/go.mod h1:zwZhaE4ZeglpTrbmbwdnVPMI5XdRu2RmByi3Qn0ztmU= github.com/iotaledger/hive.go v0.0.0-20200608165853-97365812038c/go.mod h1:zwZhaE4ZeglpTrbmbwdnVPMI5XdRu2RmByi3Qn0ztmU=
github.com/iotaledger/iota.go v1.0.0-beta.9/go.mod h1:F6WBmYd98mVjAmmPVYhnxg8NNIWCjjH8VWT9qvv3Rc8= github.com/iotaledger/iota.go v1.0.0-beta.9/go.mod h1:F6WBmYd98mVjAmmPVYhnxg8NNIWCjjH8VWT9qvv3Rc8=
github.com/iotaledger/iota.go v1.0.0-beta.14/go.mod h1:F6WBmYd98mVjAmmPVYhnxg8NNIWCjjH8VWT9qvv3Rc8= github.com/iotaledger/iota.go v1.0.0-beta.14/go.mod h1:F6WBmYd98mVjAmmPVYhnxg8NNIWCjjH8VWT9qvv3Rc8=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment