рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЧреЛ рдмреНрд▓реЙрдХрдЪреЗрди рдкрд░ рдмреНрд▓реЙрдХ рдФрд░ рд▓реЗрдирджреЗрди рдХреИрд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдП

рдЕрдВрддрддрдГ рдмреНрд▓реЙрдХрдЪреЗрди рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рди рдХреЗрд╡рд▓ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ 3 рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

  • рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдмреНрд▓реЙрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг
  • рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рд▓реЗрдирджреЗрди рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг
  • рдмреНрд▓реЙрдХрдЪреИрди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдмреНрд▓реЙрдХ рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдВ рдЕрдкрдиреЗ рд╣реИрд╢ рдпрд╛ рдКрдВрдЪрд╛рдИ (рдпрд╛ рдХреБрдЫ рдФрд░) рджреНрд╡рд╛рд░рд╛ рдвреВрдВрдврддреЗ рд╣реИрдВред

рдЫрд╡рд┐

рдпрд╣ рдЙрджреНрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХрдЪреЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреВрд╕рд░рд╛ рд▓реЗрдЦ рд╣реИ, рдпрд╣рд╛рдВ рдкрд╣рд▓рд╛ рд╣реИ ред

рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдкрд╛рдардХреЛрдВ рдиреЗ рдореБрдЭрд╕реЗ рдЬреЛ рдкреНрд░рд╢реНрди рдкреВрдЫреЗ рдереЗ, рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рдХрд░рддреЗ рд╣реБрдП, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмреНрд▓реЙрдХрдмреИрдВрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреНрд▓реЙрдХрдЪреЗрди рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдРрд╕рд╛ рд╣реА MySQL рдХрд╣рддрд╛ рд╣реИред рдФрд░ рдЕрдм рд╣рдо рдЗрд╕ рдбреЗрдЯрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдордЭреЗрдВрдЧреЗред

рдЪрд▓рд┐рдП рд▓реЗрди-рджреЗрди рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ: github.com/Rusldv/bcstartup/blob/master/transaction/builder.go

рдпрд╣рд╛рдБ рдЗрд╕рдХреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ:

type TX struct {
	DataType byte		
	TxHash string 
	TxType byte	
	Timestamp int64		
	INs []TxIn
	OUTs []TxOut
}

type TxIn struct {
	ThatTxHash string
	TxOutN int
	ByteCode string
}

type TxOut struct {
	Value int
	ByteCode string
}

TX рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ (рд▓реЗрди-рджреЗрди 2 рдХреЗ рд▓рд┐рдП), рдЗрд╕ рд▓реЗрди-рджреЗрди рдХрд╛ рд╣реИрд╢, рд▓реЗрди-рджреЗрди рдХрд╛ рдкреНрд░рдХрд╛рд░, рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдФрд░ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред TxIn рдирд┐рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдЙрд╕ рд▓реЗрди-рджреЗрди рдХреЗ рд╣реИрд╢ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдмрд╛рдпрдЯреЗрдХреЛрдб, рдФрд░ TxOut рдЖрдЙрдЯрдкреБрдЯ рдХреБрдЫ рдореВрд▓реНрдп рдФрд░ рдмрд╛рдпрдЯреЗрдХреЛрдб рдХреЛ рднреА рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд▓реЗрдирджреЗрди рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдкрд░ рдХреНрдпрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдЖрдЗрдП рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВред

рд▓реЗрдирджреЗрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдирджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдирдпрд╛рдХрд░рдг (txtype рдмрд╛рдЗрдЯ) * TX рдлрд╝рдВрдХреНрд╢рдиред

AddTxIn рд╡рд┐рдзрд┐ (thattxhash [] рдмрд╛рдЗрдЯ, txoutn int, рдХреЛрдб [] рдмрд╛рдЗрдЯ) (* TxIn, рддреНрд░реБрдЯрд┐) рд▓реЗрдирджреЗрди рдореЗрдВ рдЗрдирдкреБрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

AddTxOut (рдорд╛рди int, рдбреЗрдЯрд╛ [] рдмрд╛рдЗрдЯ) (* TxOut, рддреНрд░реБрдЯрд┐) рд╡рд┐рдзрд┐ рд▓реЗрдирджреЗрди рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

ToBytes () [] рдмрд╛рдЗрдЯ рд╡рд┐рдзрд┐ рдПрдХ рд▓реЗрдирджреЗрди рдХреЛ рдмрд╛рдЗрдЯ рд╕реНрд▓рд╛рдЗрд╕ рдореЗрдВ рдмрджрд▓ рджреЗрддреА рд╣реИред

рдЖрдВрддрд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ preByteHash (рдмрд╛рдЗрдЯреНрд╕ [] рдмрд╛рдЗрдЯ) рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдб () рдФрд░ рдЪреЗрдХ () рдореЗрдВ рдХрд┐рдП рдЧрдП рд▓реЗрди-рджреЗрди рд╣реИрд╢ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдЙрддреНрдкрдиреНрди рд▓реЗрдирджреЗрди рд╣реИрд╢ рдХреА рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдмрд┐рд▓реНрдб () рд╡рд┐рдзрд┐ рд▓реЗрдирджреЗрди рд╣реИрд╢ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд░рддреА рд╣реИ: tx.TxHash = preByteHash (tx.ToBytes ())ред

рдПрдХ рддрд╛рд░ рдХрд╛ рдЯреЛрдЬрд╝рди () рд╡рд┐рдзрд┐ рдПрдХ рд▓реЗрдирджреЗрди рдХреЛ JSON рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред

FromJSON (рдбреЗрдЯрд╛ [] рдмрд╛рдЗрдЯ) рддреНрд░реБрдЯрд┐ рд╡рд┐рдзрд┐ рдмрд╛рдЗрдЯ рд╕реНрд▓рд╛рдЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд JSON рдкреНрд░рд╛рд░реВрдк рд╕реЗ рд▓реЗрдирджреЗрди рдХреЛ рд▓реЛрдб рдХрд░рддреА рд╣реИред

рдЪреЗрдХ () рдмреВрд▓ рд╡рд┐рдзрд┐ рд▓реЗрдирджреЗрди рдХреЗ рд╣реИрд╢ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реИрд╢ рдХреА рддреБрд▓рдирд╛ рдЗрд╕ рд╕реМрджреЗ рдХреЗ рд╣реИрд╢ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рд╣реИрд╢ рдХреЗ рд╕рд╛рде рдХрд░рддреА рд╣реИ (рд╣реИрд╢ рдлрд╝реАрд▓реНрдб рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред

рд▓реЗрди-рджреЗрди рдмреНрд▓реЙрдХ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ: github.com/Rusldv/bcstartup/blob/master/block/builder.go рдмреНрд▓реЙрдХ

рдХреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдЕрдзрд┐рдХ рд╕реНрд╡реИрдЪреНрдЫрд┐рдХ рд╣реИ:

type Block struct {
	DataType byte				
	BlockHeight int					
        Timestamp int64				 
        HeaderSize int					
        PrevBlockHash string				 
        SelfBlockHash string			
	TxsHash string			
	MerkleRoot string
	CreatorPublicKey string			
	CreatorSig string
	Version int
	TxsN int
	Txs []transaction.TX
}

рдбреЗрдЯрд╛рдЯрд╛рдЗрдк рдПрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░, рдЙрд╕ рдкрд░ рдПрдХ рдиреЛрдб рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд▓реЗрдирджреЗрди рдпрд╛ рдЕрдиреНрдп рдбреЗрдЯрд╛ рд╕реЗ рдмреНрд▓реЙрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдорд╛рди 1.

рдмреНрд▓реЙрдХрд╣рд╛рдЗрдЯ рдмреНрд▓реЙрдХ рдХреА рдКрдВрдЪрд╛рдИ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред
рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдкред
рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдХреЛ рд╢реАрд░реНрд╖ рдкрд░ рд░рдЦреЗрдВред
рдкрд┐рдЫрд▓реЗ рдмреНрд▓реЙрдХ рдХреЗ PrevBlockHash рд╣реИрд╢, рдФрд░ SelfBlockHash - рд╡рд░реНрддрдорд╛рдиред
TxsHash рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд▓реЗрдирджреЗрди рд╣реИрд╢ рд╣реИред
рдорд░реНрдХрд▓реЗрд░реВрдЯ - рдорд░реНрдХрд▓ рд╡реГрдХреНрд╖ рдХреА рдЬрдбрд╝ред

рдЦреЗрддреЛрдВ рдореЗрдВ рдЕрдЧрд▓рд╛ рдмреНрд▓реЙрдХ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рд╣реИ, рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░, рдмреНрд▓реЙрдХ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг, рдмреНрд▓реЙрдХ рдореЗрдВ рд▓реЗрдирджреЗрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдпреЗ рд▓реЗрдирджреЗрди рд╕реНрд╡рдпрдВред

рдЗрд╕рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
Block.NewBlock () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреНрд▓реЙрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: NewBlock (prevBlockHash string, height int) * рдмреНрд▓реЙрдХ, рдЬреЛ рдкрд┐рдЫрд▓реЗ рдмреНрд▓реЙрдХ рдХрд╛ рд╣реИрд╢ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдмреНрд▓реЙрдХрдЪреИрди рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдКрдВрдЪрд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдХрд╛рд░ рдкреИрдХреЗрдЬ рдХреЗ рд╕реНрдерд┐рд░ рд╕реЗ рдмреНрд▓реЙрдХ рдкреНрд░рдХрд╛рд░ рднреА рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
b.DataType = types.BLOCK_TYPE.


AddTx рд╡рд┐рдзрд┐ (tx * transaction.TX) рдмреНрд▓реЙрдХ рдореЗрдВ рдПрдХ рд▓реЗрдирджреЗрди рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдмрд┐рд▓реНрдб () рд╡рд┐рдзрд┐ рдорд╛рди рдХреЛ рдмреНрд▓реЙрдХ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд▓реЛрдб рдХрд░рддреА рд╣реИ рдФрд░ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд░реНрддрдорд╛рди рд╣реИрд╢ рдХреЛ рд╕реЗрдЯ рдХрд░рддреА рд╣реИред

ToBytesHeader () [] рдмрд╛рдЗрдЯ рд╡рд┐рдзрд┐ рдмрд╛рдЗрдЯ рд╕реНрд▓рд╛рдЗрд╕ рдореЗрдВ рдмреНрд▓реЙрдХ рд╣реЗрдбрд░ (рд▓реЗрдирджреЗрди рдХреЗ рдмрд┐рдирд╛) рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреА рд╣реИред

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЯреЛрдЬрд╝рди () рд╡рд┐рдзрд┐ рдбреЗрдЯрд╛ рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдмреНрд▓реЙрдХ рдХреЛ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред

FromJSON (рдбреЗрдЯрд╛ [] рдмрд╛рдЗрдЯ) рддреНрд░реБрдЯрд┐ рд╡рд┐рдзрд┐ JSON рд╕реЗ рдмреНрд▓реЙрдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рддреА рд╣реИред

рдЪреЗрдХ () рдмреВрд▓ рд╡рд┐рдзрд┐ рдПрдХ рдмреНрд▓реЙрдХ рд╣реИрд╢ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмреНрд▓реЙрдХ рд╣реИрд╢ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдХ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред

GetTxsHash () рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдмреНрд▓реЙрдХ рдореЗрдВ рд╕рднреА рд▓реЗрдирджреЗрди рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╣реИрд╢ рд▓реМрдЯрд╛рддреА рд╣реИред

GetMerkleRoot () рд╡рд┐рдзрд┐ рдмреНрд▓реЙрдХ рдореЗрдВ рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рдорд░реНрдХрд▓ рдЯреНрд░реА рдХреА рдЬрдбрд╝ рдХреЛ рд╕реЗрдЯ рдХрд░рддреА рд╣реИред

рд╕рд╛рдЗрди (рдирд┐рдЬреА рд╕реНрдЯреНрд░рд┐рдВрдЧ) рдмреНрд▓реЙрдХ рдХреНрд░рд┐рдПрдЯрд░ рдХреА рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рддрд╛ рд╣реИред

рд╕реЗрдЯрд╣рд╛рдЗрдЯ (рдКрдВрдЪрд╛рдИ int) рд╡рд┐рдзрд┐ рдмреНрд▓реЙрдХ рд╕рдВрд░рдЪрдирд╛ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдмреНрд▓реЙрдХ рдКрдВрдЪрд╛рдИ рд▓рд┐рдЦрддреА рд╣реИред

рдЧреЗрдЯрд╣рд╛рдЗрдЯ () рдЗрдВрдЯ рд╡рд┐рдзрд┐ рдмреНрд▓реЙрдХ рд╕рдВрд░рдЪрдирд╛ рдХреА рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдмреНрд▓реЙрдХ рдХреА рдКрдВрдЪрд╛рдИ рд▓реМрдЯрд╛рддреА рд╣реИред

ToGOBBytes () [] рдмрд╛рдЗрдЯ рд╡рд┐рдзрд┐ рдмреНрд▓реЙрдХ рдХреЛ GOB рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрд╛рдЗрдЯ рд╕реНрд▓рд╛рдЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рддреА рд╣реИред

FromGOBBytes (рдбреЗрдЯрд╛ [] рдмрд╛рдЗрдЯ) рддреНрд░реБрдЯрд┐ рд╡рд┐рдзрд┐ GOB рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдЪрд░рд┐рдд рдмрд╛рдЗрдЯ рд╕реНрд▓рд╛рдЗрд╕ рд╕реЗ рдмреНрд▓реЙрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмреНрд▓реЙрдХ рдбреЗрдЯрд╛ рд▓рд┐рдЦрддреА рд╣реИред

GetHash () рд╡рд┐рдзрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрд╕ рдмреНрд▓реЙрдХ рдХрд╛ рд╣реИрд╢ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

GetPrevHash () рд╡рд┐рдзрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд┐рдЫрд▓реЗ рдмреНрд▓реЙрдХ рдХрд╛ рд╣реИрд╢ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

SetPublicKey (pubk string) рд╡рд┐рдзрд┐ рдмреНрд▓реЙрдХ рдХреНрд░рд┐рдПрдЯрд░ рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЛ рдмреНрд▓реЙрдХ рдореЗрдВ рд▓рд┐рдЦрддреА рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдмреНрд▓реЙрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдФрд░ рдЗрд╕реЗ LevelDB рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдмреНрд▓реЙрдХрдЪреИрди рдкреИрдХреЗрдЬ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдмреНрд▓реЙрдХрдЪреИрди рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ: github.com/Rusldv/bcstartup/tree/master/blockchainред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдХреЛ IBlock рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

type IGOBBytes interface {
	ToGOBBytes() []byte
	FromGOBBytes(data []byte) error
}

type IBlock interface {
	IGOBBytes
	GetHash() string
	GetPrevHash() string
	GetHeight() int
	Check() bool

}

Init () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреИрдХреЗрдЬ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдПрдХ рдмрд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
db, err = leveldb.OpenFile(BLOCKCHAIN_DB_DEBUG, nil).

CloseDB () db.Cloce () рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рд╣реИ - рдЬрд┐рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

SetTargetBlockHash (рд╣реИрд╢ рд╕реНрдЯреНрд░рд┐рдВрдЧ) рддреНрд░реБрдЯрд┐ рдлрд╝рдВрдХреНрд╢рди рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд┐рд░рдВрддрд░ BLOCK_HASH рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд╡рд░реНрддрдорд╛рди рдмреНрд▓реЙрдХ рдХрд╛ рд╣реИрд╢ рд▓рд┐рдЦрддрд╛ рд╣реИред

GetTargetBlockHash () (рд╕реНрдЯреНрд░рд┐рдВрдЧ, рддреНрд░реБрдЯрд┐) рдлрд╝рдВрдХреНрд╢рди рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╡рд░реНрддрдорд╛рди рдмреНрд▓реЙрдХ рдХрд╛ рд╣реИрд╢ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

SetTargetBlockHeight (рдКрдБрдЪрд╛рдИ int) рддреНрд░реБрдЯрд┐ рдлрд╝рдВрдХреНрд╢рди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХрдЪреЗрди рдКрдБрдЪрд╛рдИ рдХреЗ рдорд╛рди рдХреЛ BLOCK_HEIGHT рд╕реНрдерд┐рд░рд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрддрд╛ рд╣реИред

GetTargetBlockHeight () (int, error) рдлрд╝рдВрдХреНрд╢рди рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджрд┐рдП рдЧрдП рдиреЛрдб рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХрдЪреЗрди рдКрдВрдЪрд╛рдИ рджреЗрддрд╛ рд╣реИред

рдЪреЗрдХрдмреНрд▓реЙрдХ (рдмреНрд▓реЙрдХ IBlock) рдмреВрд▓ рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХрдЪреЗрди рдореЗрдВ рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╢реБрджреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред

AddBlock (рдмреНрд▓реЙрдХ IBlock) рддреНрд░реБрдЯрд┐ рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХрдЪреИрди рдореЗрдВ рдПрдХ рдмреНрд▓реЙрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдмреНрд▓реЙрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп

рдмреНрд▓реЙрдХрдЪреИрди рдкреИрдХреЗрдЬ рдХреА рдПрдХреНрд╕рдкреНрд▓реЛрд░.рдЧреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ: GetBlockByHash (рд╣реИрд╢ рд╕реНрдЯреНрд░рд┐рдВрдЧ) (* рдмреНрд▓реЙрдХ.рдмреНрд▓реЙрдХ, рддреНрд░реБрдЯрд┐) рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЦрд╛рд▓реА рдмреНрд▓реЙрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдПрдХ рдмреНрд▓реЙрдХ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣реИрд╢ рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдЬреЗрдиреЗрд╕рд┐рд╕ рдмреНрд▓реЙрдХ () рдмреНрд▓реЙрдХрдЪреЗрди рдкреИрдХреЗрдЬ рдХреЗ genesis.go рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЙрддреНрдкрддреНрддрд┐ () рддреНрд░реБрдЯрд┐ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо WebSocket рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЛрдб рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

All Articles