Documentation
¶
Overview ¶
Copyright © 2019 Annchain Authors <EMAIL ADDRESS>
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright © 2019 Annchain Authors <EMAIL ADDRESS>
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Index ¶
- func GenPartnerPair(suite *bn256.Suite) (kyber.Scalar, kyber.Point)
- func InitLoggers(logger *logrus.Logger, logdir string)
- type DefaultDkgPartner
- type DisorderedCache
- type DkgBasicInfo
- func (z *DkgBasicInfo) DecodeMsg(dc *msgp.Reader) (err error)
- func (z DkgBasicInfo) EncodeMsg(en *msgp.Writer) (err error)
- func (z DkgBasicInfo) MarshalMsg(b []byte) (o []byte, err error)
- func (z DkgBasicInfo) Msgsize() (s int)
- func (d *DkgBasicInfo) ProvideHeight() uint64
- func (z *DkgBasicInfo) UnmarshalMsg(bts []byte) (o []byte, err error)
- type DkgContext
- func (p *DkgContext) GenerateDKGer() error
- func (p *DkgContext) PartSig(msg []byte) (partSig []byte, err error)
- func (p *DkgContext) RecoverPub() (jointPubKey kyber.Point, err error)
- func (p *DkgContext) RecoverSig(msg []byte, sigShares [][]byte) (jointSig []byte, err error)
- func (p *DkgContext) VerifyByDksPublic(msg []byte, sig []byte) (err error)
- func (p *DkgContext) VerifyByPubPoly(msg []byte, sig []byte) (err error)
- type DkgDiscussion
- type DkgGeneratedListener
- type DkgMessage
- type DkgMessageEvent
- type DkgMessageType
- func (z *DkgMessageType) DecodeMsg(dc *msgp.Reader) (err error)
- func (z DkgMessageType) EncodeMsg(en *msgp.Writer) (err error)
- func (z DkgMessageType) MarshalMsg(b []byte) (o []byte, err error)
- func (z DkgMessageType) Msgsize() (s int)
- func (m DkgMessageType) String() string
- func (z *DkgMessageType) UnmarshalMsg(bts []byte) (o []byte, err error)
- type DkgPartner
- type DkgPeer
- type DkgPeerCommunicatorIncoming
- type DkgPeerCommunicatorOutgoing
- type MessageDkgDeal
- func (z *MessageDkgDeal) DecodeMsg(dc *msgp.Reader) (err error)
- func (z *MessageDkgDeal) EncodeMsg(en *msgp.Writer) (err error)
- func (m *MessageDkgDeal) GetDeal() (*dkg.Deal, error)
- func (z *MessageDkgDeal) GetType() DkgMessageType
- func (z *MessageDkgDeal) MarshalMsg(b []byte) (o []byte, err error)
- func (z *MessageDkgDeal) Msgsize() (s int)
- func (m *MessageDkgDeal) SignatureTargets() []byte
- func (m MessageDkgDeal) String() string
- func (z *MessageDkgDeal) UnmarshalMsg(bts []byte) (o []byte, err error)
- type MessageDkgDealResponse
- func (z *MessageDkgDealResponse) DecodeMsg(dc *msgp.Reader) (err error)
- func (z *MessageDkgDealResponse) EncodeMsg(en *msgp.Writer) (err error)
- func (m *MessageDkgDealResponse) GetResponse() (response *dkg.Response, err error)
- func (m MessageDkgDealResponse) GetType() DkgMessageType
- func (z *MessageDkgDealResponse) MarshalMsg(b []byte) (o []byte, err error)
- func (z *MessageDkgDealResponse) Msgsize() (s int)
- func (m *MessageDkgDealResponse) SignatureTargets() []byte
- func (m MessageDkgDealResponse) String() string
- func (z *MessageDkgDealResponse) UnmarshalMsg(bts []byte) (o []byte, err error)
- type MessageDkgGenesisPublicKey
- func (z *MessageDkgGenesisPublicKey) DecodeMsg(dc *msgp.Reader) (err error)
- func (z *MessageDkgGenesisPublicKey) EncodeMsg(en *msgp.Writer) (err error)
- func (z *MessageDkgGenesisPublicKey) GetType() DkgMessageType
- func (z *MessageDkgGenesisPublicKey) MarshalMsg(b []byte) (o []byte, err error)
- func (z *MessageDkgGenesisPublicKey) Msgsize() (s int)
- func (z *MessageDkgGenesisPublicKey) SignatureTargets() []byte
- func (z *MessageDkgGenesisPublicKey) String() string
- func (z *MessageDkgGenesisPublicKey) UnmarshalMsg(bts []byte) (o []byte, err error)
- type MessageDkgSigSets
- func (z *MessageDkgSigSets) DecodeMsg(dc *msgp.Reader) (err error)
- func (z *MessageDkgSigSets) EncodeMsg(en *msgp.Writer) (err error)
- func (z *MessageDkgSigSets) GetType() DkgMessageType
- func (z *MessageDkgSigSets) MarshalMsg(b []byte) (o []byte, err error)
- func (z *MessageDkgSigSets) Msgsize() (s int)
- func (m *MessageDkgSigSets) SignatureTargets() []byte
- func (z *MessageDkgSigSets) String() string
- func (z *MessageDkgSigSets) UnmarshalMsg(bts []byte) (o []byte, err error)
- type PartPub
- type PartPubs
- type PartSec
- type Signable
- type Stagable
- type Stage
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GenPartnerPair ¶
GenPartnerPair generates a part private/public key for discussing with others.
func InitLoggers ¶
Types ¶
type DefaultDkgPartner ¶
type DefaultDkgPartner struct { DealResponseCache map[int]*dkger.Response //my response for such deal should not be generated twice ResponseCache map[string]bool // duplicate response should not be processed twice. // contains filtered or unexported fields }
DefaultDkgPartner is the parter in a DKG group built to discuss a pub/privkey It will receive DKG messages and update the status. It is the handler for maintaining the DkgContext. Campaign or term change is not part of DKGPartner. Do their job in their own module.
func NewDefaultDkgPartner ¶
func NewDefaultDkgPartner(suite *bn256.Suite, termId uint32, numParts, threshold int, allPeers []PartPub, me PartSec, dkgPeerCommunicatorIncoming DkgPeerCommunicatorIncoming, dkgPeerCommunicatorOutgoing DkgPeerCommunicatorOutgoing) (*DefaultDkgPartner, error)
NewDefaultDkgPartner inits a dkg group. All public keys should be already generated The public keys are shared before the Dkg group can be formed. This may be done by publishing partPub to the blockchain termId is still needed to identify different Dkg groups allPeers needs to be sorted and globally order identical
func (*DefaultDkgPartner) GetDkgPeerCommunicatorIncoming ¶
func (p *DefaultDkgPartner) GetDkgPeerCommunicatorIncoming() DkgPeerCommunicatorIncoming
func (*DefaultDkgPartner) RegisterDkgGeneratedListener ¶
func (p *DefaultDkgPartner) RegisterDkgGeneratedListener(l DkgGeneratedListener)
func (*DefaultDkgPartner) Start ¶
func (p *DefaultDkgPartner) Start()
func (*DefaultDkgPartner) Stop ¶
func (p *DefaultDkgPartner) Stop()
type DisorderedCache ¶
DisorderedCache collects necessary prerequisites to make message in order
type DkgBasicInfo ¶
func (*DkgBasicInfo) DecodeMsg ¶
func (z *DkgBasicInfo) DecodeMsg(dc *msgp.Reader) (err error)
DecodeMsg implements msgp.Decodable
func (DkgBasicInfo) EncodeMsg ¶
func (z DkgBasicInfo) EncodeMsg(en *msgp.Writer) (err error)
EncodeMsg implements msgp.Encodable
func (DkgBasicInfo) MarshalMsg ¶
func (z DkgBasicInfo) MarshalMsg(b []byte) (o []byte, err error)
MarshalMsg implements msgp.Marshaler
func (DkgBasicInfo) Msgsize ¶
func (z DkgBasicInfo) Msgsize() (s int)
Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
func (*DkgBasicInfo) ProvideHeight ¶
func (d *DkgBasicInfo) ProvideHeight() uint64
func (*DkgBasicInfo) UnmarshalMsg ¶
func (z *DkgBasicInfo) UnmarshalMsg(bts []byte) (o []byte, err error)
UnmarshalMsg implements msgp.Unmarshaler
type DkgContext ¶
type DkgContext struct { SessionId uint32 MyIndex uint32 Me PartSec PartPubs []PartPub // must be ordered from the outside //CandidatePartSec []kyber.Scalar //CandidatePublicKey [][]byte //addressIndex map[common.Address]int //SecretKeyContribution map[common.Address]kyber.Scalar Suite *bn256.Suite Dkger *dkg.DistKeyGenerator // backend algorithm //Resps map[common.Address]*dkg.Response //dealsIndex map[uint32]bool Threshold int NbParticipants int JointPubKey kyber.Point //SigShares [][]byte KeyShare *dkg.DistKeyShare // cache of the DistKeyShare to avoid recovery multiple times }
DkgContext stores the DKG info collected from other peers. It can sign messages individually and recover the joint sig once enough peers share their partSigs It is the core algorithm of DKG
func NewDkgContext ¶
func NewDkgContext(s *bn256.Suite, termId uint32) *DkgContext
func (*DkgContext) GenerateDKGer ¶
func (p *DkgContext) GenerateDKGer() error
GenerateDKGer inits a dkg by all part-public keys and my part-private key Then it is possible to sign and verify data.
func (*DkgContext) PartSig ¶
func (p *DkgContext) PartSig(msg []byte) (partSig []byte, err error)
PartSig signs the message into a single sigShare.
func (*DkgContext) RecoverPub ¶
func (p *DkgContext) RecoverPub() (jointPubKey kyber.Point, err error)
RecoverPub builds a joint public key from keyshares collected from all other participants
func (*DkgContext) RecoverSig ¶
func (p *DkgContext) RecoverSig(msg []byte, sigShares [][]byte) (jointSig []byte, err error)
RecoverSig builds a jointSignature from sigShares collected from enough participants
func (*DkgContext) VerifyByDksPublic ¶
func (p *DkgContext) VerifyByDksPublic(msg []byte, sig []byte) (err error)
VerifyByDksPublic verifies signature for msg
func (*DkgContext) VerifyByPubPoly ¶
func (p *DkgContext) VerifyByPubPoly(msg []byte, sig []byte) (err error)
VerifyByPubPoly verifies signature for msg
type DkgDiscussion ¶
func (*DkgDiscussion) GetCurrentStage ¶
func (d *DkgDiscussion) GetCurrentStage() Stage
type DkgGeneratedListener ¶
type DkgGeneratedListener interface {
GetDkgGeneratedEventChannel() chan bool
}
type DkgMessage ¶
type DkgMessage interface { Signable GetType() DkgMessageType ProvideHeight() uint64 String() string }
type DkgMessageEvent ¶
type DkgMessageEvent struct { Message DkgMessage Peer DkgPeer }
type DkgMessageType ¶
type DkgMessageType uint16
const ( DkgMessageTypeDeal DkgMessageType = iota + 200 DkgMessageTypeDealResponse DkgMessageTypeSigSets DkgMessageTypeGenesisPublicKey )
func (*DkgMessageType) DecodeMsg ¶
func (z *DkgMessageType) DecodeMsg(dc *msgp.Reader) (err error)
DecodeMsg implements msgp.Decodable
func (DkgMessageType) EncodeMsg ¶
func (z DkgMessageType) EncodeMsg(en *msgp.Writer) (err error)
EncodeMsg implements msgp.Encodable
func (DkgMessageType) MarshalMsg ¶
func (z DkgMessageType) MarshalMsg(b []byte) (o []byte, err error)
MarshalMsg implements msgp.Marshaler
func (DkgMessageType) Msgsize ¶
func (z DkgMessageType) Msgsize() (s int)
Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
func (DkgMessageType) String ¶
func (m DkgMessageType) String() string
func (*DkgMessageType) UnmarshalMsg ¶
func (z *DkgMessageType) UnmarshalMsg(bts []byte) (o []byte, err error)
UnmarshalMsg implements msgp.Unmarshaler
type DkgPartner ¶
type DkgPartner interface { Start() Stop() GetDkgPeerCommunicatorIncoming() DkgPeerCommunicatorIncoming RegisterDkgGeneratedListener(l DkgGeneratedListener) }
type DkgPeerCommunicatorIncoming ¶
type DkgPeerCommunicatorIncoming interface { GetPipeIn() chan *DkgMessageEvent GetPipeOut() chan *DkgMessageEvent }
type DkgPeerCommunicatorOutgoing ¶
type DkgPeerCommunicatorOutgoing interface { Broadcast(msg DkgMessage, peers []DkgPeer) Unicast(msg DkgMessage, peer DkgPeer) }
type MessageDkgDeal ¶
type MessageDkgDeal struct { DkgBasicInfo //Id uint32 Data []byte }
func (*MessageDkgDeal) DecodeMsg ¶
func (z *MessageDkgDeal) DecodeMsg(dc *msgp.Reader) (err error)
DecodeMsg implements msgp.Decodable
func (*MessageDkgDeal) EncodeMsg ¶
func (z *MessageDkgDeal) EncodeMsg(en *msgp.Writer) (err error)
EncodeMsg implements msgp.Encodable
func (*MessageDkgDeal) GetType ¶
func (z *MessageDkgDeal) GetType() DkgMessageType
func (*MessageDkgDeal) MarshalMsg ¶
func (z *MessageDkgDeal) MarshalMsg(b []byte) (o []byte, err error)
MarshalMsg implements msgp.Marshaler
func (*MessageDkgDeal) Msgsize ¶
func (z *MessageDkgDeal) Msgsize() (s int)
Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
func (*MessageDkgDeal) SignatureTargets ¶
func (m *MessageDkgDeal) SignatureTargets() []byte
func (MessageDkgDeal) String ¶
func (m MessageDkgDeal) String() string
func (*MessageDkgDeal) UnmarshalMsg ¶
func (z *MessageDkgDeal) UnmarshalMsg(bts []byte) (o []byte, err error)
UnmarshalMsg implements msgp.Unmarshaler
type MessageDkgDealResponse ¶
type MessageDkgDealResponse struct { DkgBasicInfo //MyIndex uint32 Data []byte }
func (*MessageDkgDealResponse) DecodeMsg ¶
func (z *MessageDkgDealResponse) DecodeMsg(dc *msgp.Reader) (err error)
DecodeMsg implements msgp.Decodable
func (*MessageDkgDealResponse) EncodeMsg ¶
func (z *MessageDkgDealResponse) EncodeMsg(en *msgp.Writer) (err error)
EncodeMsg implements msgp.Encodable
func (*MessageDkgDealResponse) GetResponse ¶
func (m *MessageDkgDealResponse) GetResponse() (response *dkg.Response, err error)
func (MessageDkgDealResponse) GetType ¶
func (m MessageDkgDealResponse) GetType() DkgMessageType
func (*MessageDkgDealResponse) MarshalMsg ¶
func (z *MessageDkgDealResponse) MarshalMsg(b []byte) (o []byte, err error)
MarshalMsg implements msgp.Marshaler
func (*MessageDkgDealResponse) Msgsize ¶
func (z *MessageDkgDealResponse) Msgsize() (s int)
Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
func (*MessageDkgDealResponse) SignatureTargets ¶
func (m *MessageDkgDealResponse) SignatureTargets() []byte
func (MessageDkgDealResponse) String ¶
func (m MessageDkgDealResponse) String() string
func (*MessageDkgDealResponse) UnmarshalMsg ¶
func (z *MessageDkgDealResponse) UnmarshalMsg(bts []byte) (o []byte, err error)
UnmarshalMsg implements msgp.Unmarshaler
type MessageDkgGenesisPublicKey ¶
type MessageDkgGenesisPublicKey struct { DkgBasicInfo PublicKeyBytes []byte }
func (*MessageDkgGenesisPublicKey) DecodeMsg ¶
func (z *MessageDkgGenesisPublicKey) DecodeMsg(dc *msgp.Reader) (err error)
DecodeMsg implements msgp.Decodable
func (*MessageDkgGenesisPublicKey) EncodeMsg ¶
func (z *MessageDkgGenesisPublicKey) EncodeMsg(en *msgp.Writer) (err error)
EncodeMsg implements msgp.Encodable
func (*MessageDkgGenesisPublicKey) GetType ¶
func (z *MessageDkgGenesisPublicKey) GetType() DkgMessageType
func (*MessageDkgGenesisPublicKey) MarshalMsg ¶
func (z *MessageDkgGenesisPublicKey) MarshalMsg(b []byte) (o []byte, err error)
MarshalMsg implements msgp.Marshaler
func (*MessageDkgGenesisPublicKey) Msgsize ¶
func (z *MessageDkgGenesisPublicKey) Msgsize() (s int)
Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
func (*MessageDkgGenesisPublicKey) SignatureTargets ¶
func (z *MessageDkgGenesisPublicKey) SignatureTargets() []byte
func (*MessageDkgGenesisPublicKey) String ¶
func (z *MessageDkgGenesisPublicKey) String() string
func (*MessageDkgGenesisPublicKey) UnmarshalMsg ¶
func (z *MessageDkgGenesisPublicKey) UnmarshalMsg(bts []byte) (o []byte, err error)
UnmarshalMsg implements msgp.Unmarshaler
type MessageDkgSigSets ¶
type MessageDkgSigSets struct { DkgBasicInfo PkBls []byte }
func (*MessageDkgSigSets) DecodeMsg ¶
func (z *MessageDkgSigSets) DecodeMsg(dc *msgp.Reader) (err error)
DecodeMsg implements msgp.Decodable
func (*MessageDkgSigSets) EncodeMsg ¶
func (z *MessageDkgSigSets) EncodeMsg(en *msgp.Writer) (err error)
EncodeMsg implements msgp.Encodable
func (*MessageDkgSigSets) GetType ¶
func (z *MessageDkgSigSets) GetType() DkgMessageType
func (*MessageDkgSigSets) MarshalMsg ¶
func (z *MessageDkgSigSets) MarshalMsg(b []byte) (o []byte, err error)
MarshalMsg implements msgp.Marshaler
func (*MessageDkgSigSets) Msgsize ¶
func (z *MessageDkgSigSets) Msgsize() (s int)
Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
func (*MessageDkgSigSets) SignatureTargets ¶
func (m *MessageDkgSigSets) SignatureTargets() []byte
func (*MessageDkgSigSets) String ¶
func (z *MessageDkgSigSets) String() string
func (*MessageDkgSigSets) UnmarshalMsg ¶
func (z *MessageDkgSigSets) UnmarshalMsg(bts []byte) (o []byte, err error)
UnmarshalMsg implements msgp.Unmarshaler
type PartSec ¶
type PartSec struct { PartPub Scalar kyber.Scalar PrivateKey crypto.PrivateKey }
func SetupAllDkgers ¶
func SetupAllDkgers(suite *bn256.Suite, numParts int, threshold int) (dkgers []*dkg.DistKeyGenerator, partSecs []PartSec, err error)
SetupAllDkgers generate all Dkgers locally (for genesis or test purporse).
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
// Copyright © 2019 Annchain Authors <EMAIL ADDRESS> // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License.
|
// Copyright © 2019 Annchain Authors <EMAIL ADDRESS> // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. |