Documentation
¶
Index ¶
- Constants
- Variables
- func ComposeReadyKey(nodeID string) string
- func IsReshareRound(roundMsg string) bool
- func NewECDHSession(nodeID string, peerIDs []string, pubSub messaging.PubSub, ...) *ecdhSession
- func NewECDSAReshareSession(walletID string, pubSub messaging.PubSub, direct messaging.DirectMessaging, ...) *ecdsaReshareSession
- func NewEDDSAReshareSession(walletID string, pubSub messaging.PubSub, direct messaging.DirectMessaging, ...) *eddsaReshareSession
- func NewRegistry(nodeID string, peerNodeIDs []string, consulKV infra.ConsulKV, ...) *registry
- type CKD
- func (c *CKD) Derive(walletID string, masterPub *crypto.ECPoint, path []uint32, ...) (*big.Int, *ckd.ExtendedKey, error)
- func (c *CKD) ECDSAUpdateSinglePublicKeyAndAdjustBigXj(delta *big.Int, key *ecdsaKeygen.LocalPartySaveData, childPk *crypto.ECPoint, ...) error
- func (c *CKD) EDDSAUpdateSinglePublicKeyAndAdjustBigXj(delta *big.Int, key *eddsaKeygen.LocalPartySaveData, childPk *crypto.ECPoint, ...) error
- func (c *CKD) GetMasterChainCode() []byte
- type ECDHSession
- type GetRoundFunc
- type ID
- type KeyComposerFn
- type KeyGenSession
- type KeyType
- type Node
- func (p *Node) Close()
- func (p *Node) CreateKeyGenSession(sessionType SessionType, walletID string, threshold int, ...) (KeyGenSession, error)
- func (p *Node) CreateReshareSession(sessionType SessionType, walletID string, newThreshold int, ...) (ReshareSession, error)
- func (p *Node) CreateSigningSession(sessionType SessionType, walletID string, txID string, ...) (SigningSession, error)
- func (p *Node) ID() string
- type PeerRegistry
- type ReshareSession
- type RoundInfo
- type Session
- type SessionType
- type SigningSession
- type TopicComposer
Constants ¶
View Source
const ( KEYGEN1 = "KGRound1Message" KEYGEN2aUnicast = "KGRound2Message1" KEYGEN2b = "KGRound2Message2" KEYGEN3 = "KGRound3Message" KEYSIGN1aUnicast = "SignRound1Message1" KEYSIGN1b = "SignRound1Message2" KEYSIGN2Unicast = "SignRound2Message" KEYSIGN3 = "SignRound3Message" KEYSIGN4 = "SignRound4Message" KEYSIGN5 = "SignRound5Message" KEYSIGN6 = "SignRound6Message" KEYSIGN7 = "SignRound7Message" KEYSIGN8 = "SignRound8Message" KEYSIGN9 = "SignRound9Message" KEYRESHARING1Unicast = "DGRound1Message" KEYRESHARING2aUnicast = "DGRound2Message1" KEYRESHARING2bUnicast = "DGRound2Message2" KEYRESHARING3aUnicast = "DGRound3Message1" KEYRESHARING3b = "DGRound3Message2" KEYRESHARING4a = "DGRound4Message1" KEYRESHARING4bUnicast = "DGRound4Message2" TSSKEYGENROUNDS = 4 TSSKEYSIGNROUNDS = 10 )
View Source
const ( EDDSA_KEYGEN1 = "KGRound1Message" EDDSA_KEYGEN2aUnicast = "KGRound2Message1" EDDSA_KEYGEN2b = "KGRound2Message2" EDDSA_KEYSIGN1 = "SignRound1Message" EDDSA_KEYSIGN2 = "SignRound2Message" EDDSA_KEYSIGN3 = "SignRound3Message" EDDSA_RESHARING1 = "DGRound1Message" EDDSA_RESHARING2 = "DGRound2Message" EDDSA_RESHARING3aUnicast = "DGRound3Message1" EDDSA_RESHARING3bUnicast = "DGRound3Message2" EDDSA_RESHARING4 = "DGRound4Message" EDDSA_TSSKEYGENROUNDS = 3 EDDSA_TSSKEYSIGNROUNDS = 3 EDDSA_RESHARINGROUNDS = 4 )
View Source
const ( ECDHExchangeTopic = "ecdh:exchange" ECDHExchangeTimeout = 2 * time.Minute )
View Source
const ( PurposeKeygen string = "keygen" PurposeSign string = "sign" BackwardCompatibleVersion int = 0 DefaultVersion int = 1 )
View Source
const ( TypeGenerateWalletResultFmt = "mpc.mpc_keygen_result.%s" TypeSigningResultFmt = "mpc.mpc_signing_result.%s" SessionTypeECDSA SessionType = "session_ecdsa" SessionTypeEDDSA SessionType = "session_eddsa" )
View Source
const (
ReadinessCheckPeriod = 1 * time.Second
)
Variables ¶
View Source
var ( ErrInvalidChainCode = errors.New("invalid chain code length") ErrNilKey = errors.New("key cannot be nil") ErrNilPoint = errors.New("point cannot be nil") )
View Source
var ( ErrNotEnoughParticipants = errors.New("Not enough participants to sign") ErrNotInParticipantList = errors.New("Node is not in the participant list") )
Functions ¶
func ComposeReadyKey ¶
func IsReshareRound ¶ added in v0.3.0
func NewECDHSession ¶ added in v0.3.2
func NewECDSAReshareSession ¶ added in v0.3.0
func NewECDSAReshareSession( walletID string, pubSub messaging.PubSub, direct messaging.DirectMessaging, participantPeerIDs []string, selfID *tss.PartyID, oldPartyIDs []*tss.PartyID, newPartyIDs []*tss.PartyID, threshold int, newThreshold int, preParams *keygen.LocalPreParams, kvstore kvstore.KVStore, keyinfoStore keyinfo.Store, resultQueue messaging.MessageQueue, identityStore identity.Store, newPeerIDs []string, isNewParty bool, version int, ) *ecdsaReshareSession
func NewEDDSAReshareSession ¶ added in v0.3.0
func NewEDDSAReshareSession( walletID string, pubSub messaging.PubSub, direct messaging.DirectMessaging, participantPeerIDs []string, selfID *tss.PartyID, oldPartyIDs []*tss.PartyID, newPartyIDs []*tss.PartyID, threshold int, newThreshold int, kvstore kvstore.KVStore, keyinfoStore keyinfo.Store, resultQueue messaging.MessageQueue, identityStore identity.Store, newPeerIDs []string, isNewParty bool, version int, ) *eddsaReshareSession
Types ¶
type CKD ¶ added in v0.3.4
type CKD struct {
// contains filtered or unexported fields
}
CKD handles Child Key Derivation (ENV-based)
func NewCKDFromHex ¶ added in v0.3.4
NewCKDFromHex creates CKD from a hex-encoded chain code string (32 bytes).
func (*CKD) Derive ¶ added in v0.3.4
func (c *CKD) Derive(walletID string, masterPub *crypto.ECPoint, path []uint32, curve elliptic.Curve) (*big.Int, *ckd.ExtendedKey, error)
Derive derives a child key from the master public key using the given path. Uses standard BIP32 derivation: same master key + same path = same child key. Each level in the path automatically gets its own chain code via HMAC(parent_chain_code, pubkey || index).
func (*CKD) ECDSAUpdateSinglePublicKeyAndAdjustBigXj ¶ added in v0.3.4
func (c *CKD) ECDSAUpdateSinglePublicKeyAndAdjustBigXj(delta *big.Int, key *ecdsaKeygen.LocalPartySaveData, childPk *crypto.ECPoint, ec elliptic.Curve) error
ECDSAUpdateSinglePublicKeyAndAdjustBigXj updates ECDSA public key and BigXj.
func (*CKD) EDDSAUpdateSinglePublicKeyAndAdjustBigXj ¶ added in v0.3.4
func (c *CKD) EDDSAUpdateSinglePublicKeyAndAdjustBigXj(delta *big.Int, key *eddsaKeygen.LocalPartySaveData, childPk *crypto.ECPoint, ec elliptic.Curve) error
EDDSAUpdateSinglePublicKeyAndAdjustBigXj updates EdDSA public key and BigXj.
func (*CKD) GetMasterChainCode ¶ added in v0.3.4
GetMasterChainCode returns a copy of the chain code.
type ECDHSession ¶ added in v0.3.2
type GetRoundFunc ¶
type KeyComposerFn ¶
type KeyGenSession ¶ added in v0.3.0
type Node ¶
type Node struct {
// contains filtered or unexported fields
}
func (*Node) CreateKeyGenSession ¶
func (p *Node) CreateKeyGenSession( sessionType SessionType, walletID string, threshold int, resultQueue messaging.MessageQueue, ) (KeyGenSession, error)
func (*Node) CreateReshareSession ¶ added in v0.3.0
func (p *Node) CreateReshareSession( sessionType SessionType, walletID string, newThreshold int, newPeerIDs []string, isNewPeer bool, resultQueue messaging.MessageQueue, ) (ReshareSession, error)
func (*Node) CreateSigningSession ¶
func (p *Node) CreateSigningSession( sessionType SessionType, walletID string, txID string, networkInternalCode string, resultQueue messaging.MessageQueue, derivationPath []uint32, idempotentKey string, ) (SigningSession, error)
type PeerRegistry ¶
type PeerRegistry interface {
Ready() error
ArePeersReady() bool
AreMajorityReady() bool
WatchPeersReady()
// Resign is called by the node when it is going to shutdown
Resign() error
GetReadyPeersCount() int64
GetReadyPeersCountExcludeSelf() int64
GetReadyPeersIncludeSelf() []string // get ready peers include self
GetTotalPeersCount() int64
OnPeerConnected(callback func(peerID string))
OnPeerDisconnected(callback func(peerID string))
OnPeerReConnected(callback func(peerID string))
}
type ReshareSession ¶ added in v0.3.0
type ReshareSession interface {
Session
}
type RoundInfo ¶
func GetEcdsaMsgRound ¶
type SessionType ¶
type SessionType string
type SigningSession ¶
Click to show internal directories.
Click to hide internal directories.