block_chain

package
v0.0.0-...-6951023 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 22, 2021 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const HashSize = sha256.Size
View Source
const PuzzleSize = sha256.Size
View Source
const SolutionSize = sha256.Size

Variables

This section is empty.

Functions

func CheckHash

func CheckHash(b Block) bool

func Hash

func Hash(a interface{}) [SolutionSize]byte

func MakeSelf

func MakeSelf(name string) self

func MarshalBlock

func MarshalBlock(b Block) ([]byte, error)

Types

type Action

type Action string

type AddNode

type AddNode struct {
	AdminValid PrivValidation
	NewNodeID  peer.ID
	// contains filtered or unexported fields
}

func NewAddNode

func NewAddNode(prev_hash [HashSize]byte,
	name string,
	pub_valid PrivValidation,
	admin_valid PrivValidation,
	new_node_id peer.ID) *AddNode

func (*AddNode) ApplyValidations

func (an *AddNode) ApplyValidations(publishers map[[PuzzleSize]byte]string, admins *set.Set)

func (*AddNode) AsString

func (an *AddNode) AsString() string

func (*AddNode) CheckValidations

func (an *AddNode) CheckValidations(publishers map[[PuzzleSize]byte]string, admins *set.Set) bool

func (*AddNode) GetAction

func (an *AddNode) GetAction() Action

func (*AddNode) GetHash

func (an *AddNode) GetHash() [HashSize]byte

func (*AddNode) GetName

func (an *AddNode) GetName() string

func (*AddNode) GetPrevHash

func (an *AddNode) GetPrevHash() [HashSize]byte

func (*AddNode) SetHash

func (an *AddNode) SetHash(new_hash [HashSize]byte)

type AddPublisher

type AddPublisher struct {
	AdminValid         PrivValidation
	NewPublisherPuzzle [PuzzleSize]byte
	NewName            string
	// contains filtered or unexported fields
}

func NewAddPublisher

func NewAddPublisher(prev_hash [HashSize]byte,
	name string,
	pub_valid PrivValidation,
	admin_valid PrivValidation,
	new_publisher_puzzle [PuzzleSize]byte,
	new_name string) *AddPublisher

func (*AddPublisher) ApplyValidations

func (ap *AddPublisher) ApplyValidations(publishers map[[PuzzleSize]byte]string, admins *set.Set)

func (*AddPublisher) AsString

func (ap *AddPublisher) AsString() string

func (*AddPublisher) CheckValidations

func (ap *AddPublisher) CheckValidations(publishers map[[PuzzleSize]byte]string, admins *set.Set) bool

func (*AddPublisher) GetAction

func (ap *AddPublisher) GetAction() Action

func (*AddPublisher) GetHash

func (ap *AddPublisher) GetHash() [HashSize]byte

func (*AddPublisher) GetName

func (ap *AddPublisher) GetName() string

func (*AddPublisher) GetPrevHash

func (ap *AddPublisher) GetPrevHash() [HashSize]byte

func (*AddPublisher) SetHash

func (ap *AddPublisher) SetHash(new_hash [HashSize]byte)

type Block

type Block interface {
	GetHash() [HashSize]byte
	GetAction() Action
	GetName() string
	GetPrevHash() [HashSize]byte
	SetHash(new_hash [HashSize]byte)
	CheckValidations(publishers map[[PuzzleSize]byte]string, admins *set.Set) bool
	ApplyValidations(publishers map[[PuzzleSize]byte]string, admins *set.Set)
	AsString() string
}

func UnmarshalBlock

func UnmarshalBlock(b []byte) (Block, error)

type BlockChain

type BlockChain struct {
	ChainOut chan Block
	// contains filtered or unexported fields
}

func New

func New(self self, asyncOut bool) *BlockChain

func (*BlockChain) AddBlock

func (bc *BlockChain) AddBlock(b Block) error

func (*BlockChain) AddNode

func (bc *BlockChain) AddNode(friend_peerID peer.ID) error

func (*BlockChain) AddPublisher

func (bc *BlockChain) AddPublisher(friend_puzzle [PuzzleSize]byte, friend_name string) error

func (*BlockChain) ChangeName

func (bc *BlockChain) ChangeName(new_name string) error

func (*BlockChain) Genesis

func (bc *BlockChain) Genesis(title string) error

func (*BlockChain) HandlePeerFound

func (bc *BlockChain) HandlePeerFound(pi peer.AddrInfo)

func (*BlockChain) Invite

func (bc *BlockChain) Invite() (string, error)

func (*BlockChain) Join

func (bc *BlockChain) Join(rendezvous string, genesis_hash [HashSize]byte)

func (*BlockChain) Post

func (bc *BlockChain) Post(msg string) error

func (*BlockChain) Run

func (bc *BlockChain) Run()

func (*BlockChain) ShareChain

func (bc *BlockChain) ShareChain() list.List

func (*BlockChain) ShareChainSince

func (bc *BlockChain) ShareChainSince(hash [HashSize]byte) (list.List, error)

func (*BlockChain) ShareID

func (bc *BlockChain) ShareID() peer.ID

func (*BlockChain) SharePubPuzzle

func (bc *BlockChain) SharePubPuzzle() [PuzzleSize]byte

type ChangeName

type ChangeName struct {
	NewName string
	// contains filtered or unexported fields
}

func NewChangeName

func NewChangeName(prev_hash [HashSize]byte,
	name string,
	pub_valid PrivValidation,
	new_name string) *ChangeName

func (*ChangeName) ApplyValidations

func (cn *ChangeName) ApplyValidations(publishers map[[PuzzleSize]byte]string, admins *set.Set)

func (*ChangeName) AsString

func (cn *ChangeName) AsString() string

func (*ChangeName) CheckValidations

func (cn *ChangeName) CheckValidations(publishers map[[PuzzleSize]byte]string, admins *set.Set) bool

func (*ChangeName) GetAction

func (cn *ChangeName) GetAction() Action

func (*ChangeName) GetHash

func (cn *ChangeName) GetHash() [HashSize]byte

func (*ChangeName) GetName

func (cn *ChangeName) GetName() string

func (*ChangeName) GetPrevHash

func (cn *ChangeName) GetPrevHash() [HashSize]byte

func (*ChangeName) SetHash

func (cn *ChangeName) SetHash(new_hash [HashSize]byte)

type Genesis

type Genesis struct {
	AdminValid PrivValidation
	Title      string
	NodeID     peer.ID
	// contains filtered or unexported fields
}

func NewGenesis

func NewGenesis(prev_hash [HashSize]byte,
	name string,
	pub_valid PrivValidation,
	admin_valid PrivValidation,
	title string,
	node_id peer.ID) *Genesis

func (*Genesis) ApplyValidations

func (g *Genesis) ApplyValidations(publishers map[[PuzzleSize]byte]string, admins *set.Set)

func (*Genesis) AsString

func (g *Genesis) AsString() string

func (*Genesis) CheckValidations

func (g *Genesis) CheckValidations(publishers map[[PuzzleSize]byte]string, admins *set.Set) bool

func (*Genesis) GetAction

func (g *Genesis) GetAction() Action

func (*Genesis) GetHash

func (g *Genesis) GetHash() [HashSize]byte

func (*Genesis) GetName

func (g *Genesis) GetName() string

func (*Genesis) GetPrevHash

func (g *Genesis) GetPrevHash() [HashSize]byte

func (*Genesis) SetHash

func (g *Genesis) SetHash(new_hash [HashSize]byte)

type Message

type Message string

type Post

type Post struct {
	Msg string
	// contains filtered or unexported fields
}

func NewPost

func NewPost(prev_hash [HashSize]byte,
	name string,
	pub_valid PrivValidation,
	msg string) *Post

func (*Post) ApplyValidations

func (p *Post) ApplyValidations(publishers map[[PuzzleSize]byte]string, admins *set.Set)

func (*Post) AsString

func (p *Post) AsString() string

func (*Post) CheckValidations

func (p *Post) CheckValidations(publishers map[[PuzzleSize]byte]string, admins *set.Set) bool

func (*Post) GetAction

func (p *Post) GetAction() Action

func (*Post) GetHash

func (p *Post) GetHash() [HashSize]byte

func (*Post) GetName

func (p *Post) GetName() string

func (*Post) GetPrevHash

func (p *Post) GetPrevHash() [HashSize]byte

func (*Post) SetHash

func (p *Post) SetHash(new_hash [HashSize]byte)

type PrivValidation

type PrivValidation struct {
	Solution   [SolutionSize]byte
	NextPuzzle [PuzzleSize]byte
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL