Skip to content

Commit

Permalink
update chain contract (#229)
Browse files Browse the repository at this point in the history
- mintage contract support beneficial
- fix p2p
- refine block to support PoV

Signed-off-by: Goren G <[email protected]>

Co-authored-by: pwc <[email protected]>
Co-authored-by: zengchen221 <[email protected]>
  • Loading branch information
3 people authored and gythialy committed Mar 29, 2019
1 parent 401d6b6 commit a13cd2b
Show file tree
Hide file tree
Showing 23 changed files with 609 additions and 610 deletions.
6 changes: 3 additions & 3 deletions chain/services/ledger_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ package services

import (
"errors"

"github.com/qlcchain/go-qlc/common"
"github.com/qlcchain/go-qlc/common/types"
"github.com/qlcchain/go-qlc/config"
"github.com/qlcchain/go-qlc/ledger"
"github.com/qlcchain/go-qlc/ledger/process"
"github.com/qlcchain/go-qlc/log"
"go.uber.org/zap"

"github.com/qlcchain/go-qlc/common"
"github.com/qlcchain/go-qlc/config"
)

type LedgerService struct {
Expand Down
8 changes: 4 additions & 4 deletions cmd/client/commands/mintage.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ func mintageAction(account, preHash, tokenName, tokenSymbol, totalSupply string,

mintageParam := api.MintageParams{
SelfAddr: a.Address(), PrevHash: previous, TokenName: tokenName,
TotalSupply: totalSupply, TokenSymbol: tokenSymbol, Decimals: d,
TotalSupply: totalSupply, TokenSymbol: tokenSymbol, Decimals: d, Beneficial: a.Address(),
}

send := types.StateBlock{}
Expand All @@ -161,9 +161,9 @@ func mintageAction(account, preHash, tokenName, tokenSymbol, totalSupply string,
return err
}

reward.Address = a.Address()
reward.Representative = a.Address()
reward.Link = sendHash
//reward.Address = a.Address()
//reward.Representative = a.Address()
//reward.Link = sendHash
reward.Signature = a.Sign(reward.GetHash())
var w2 types.Work
worker2, _ := types.NewWorker(w2, reward.Root())
Expand Down
136 changes: 76 additions & 60 deletions common/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,71 +18,87 @@ import (

var (
jsonMintage = `{
"type": "ContractSend",
"token": "45dd217cd9ff89f7b64ceda4886cc68dde9dfa47a8a422d165e2ce6f9a834fad",
"address": "qlc_3qjky1ptg9qkzm8iertdzrnx9btjbaea33snh1w4g395xqqczye4kgcfyfs1",
"balance": "0",
"previous": "0000000000000000000000000000000000000000000000000000000000000000",
"link": "0000000000000000000000000000000000000000000000000000000000000000",
"message": "0000000000000000000000000000000000000000000000000000000000000000",
"data": "RtDOi0XdIXzZ/4n3tkztpIhsxo3enfpHqKQi0WXizm+ag0+tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVKa6ehgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1FMQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANRTEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"quota": 0,
"timestamp": 1553990401,
"extra": "0000000000000000000000000000000000000000000000000000000000000000",
"representative": "qlc_1t1uynkmrs597z4ns6ymppwt65baksgdjy1dnw483ubzm97oayyo38ertg44",
"work": "0000000000000000",
"signature": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
}`
"type": "ContractSend",
"token": "45dd217cd9ff89f7b64ceda4886cc68dde9dfa47a8a422d165e2ce6f9a834fad",
"address": "qlc_3qjky1ptg9qkzm8iertdzrnx9btjbaea33snh1w4g395xqqczye4kgcfyfs1",
"balance": "0",
"vote": "0",
"network": "0",
"storage": "0",
"oracle": "0",
"previous": "0000000000000000000000000000000000000000000000000000000000000000",
"link": "0000000000000000000000000000000000000000000000000000000000000000",
"message": "0000000000000000000000000000000000000000000000000000000000000000",
"data": "6TrdxEXdIXzZ/4n3tkztpIhsxo3enfpHqKQi0WXizm+ag0+tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVKa6ehgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhoG/UlPGRnL8VMk9O1uaINKJZcuPgLpwRg7T+Zy1R71QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUUxDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1FMQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"povHeight": 0,
"timestamp": 1553990401,
"extra": "0000000000000000000000000000000000000000000000000000000000000000",
"representative": "qlc_1t1uynkmrs597z4ns6ymppwt65baksgdjy1dnw483ubzm97oayyo38ertg44",
"work": "000000000048f5b9",
"signature": "02c2d305fae4717cf132c8f653be5bcd8cd01a671af33ad144353e66fcbe7262224de0f929934d4871b8a1c971cf29131e4a4adceff856edc69a15bb8d759e0a"
}`
jsonGenesis = `{
"type": "ContractReward",
"token": "45dd217cd9ff89f7b64ceda4886cc68dde9dfa47a8a422d165e2ce6f9a834fad",
"address": "qlc_1t1uynkmrs597z4ns6ymppwt65baksgdjy1dnw483ubzm97oayyo38ertg44",
"balance": "60000000000000000",
"previous": "0000000000000000000000000000000000000000000000000000000000000000",
"link": "bf1cb34e79f8739367ad7de4a16c87c0e72ea483521fec0f0ddf7b5e90d03abd",
"message": "0000000000000000000000000000000000000000000000000000000000000000",
"data": "Rd0hfNn/ife2TO2kiGzGjd6d+keopCLRZeLOb5qDT60AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANUprp6GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGgb9SU8ZGcvxUyT07W5og0olly4+AunBGDtP5nLVHvVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUUxDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1FMQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"quota": 0,
"timestamp": 1553990410,
"extra": "0000000000000000000000000000000000000000000000000000000000000000",
"representative": "qlc_1t1uynkmrs597z4ns6ymppwt65baksgdjy1dnw483ubzm97oayyo38ertg44",
"work": "000000000054b46a",
"signature": "3420612d28da9e5990bec8aa53d5dab89c9bcc70d020ce1dc8c74c844274e6eaf3eb7bba24bca95e566b036b17c9f01936835042dde70d0bd8f49659f83c0306"
}`
"type": "ContractReward",
"token": "45dd217cd9ff89f7b64ceda4886cc68dde9dfa47a8a422d165e2ce6f9a834fad",
"address": "qlc_1t1uynkmrs597z4ns6ymppwt65baksgdjy1dnw483ubzm97oayyo38ertg44",
"balance": "60000000000000000",
"vote": "0",
"network": "0",
"storage": "0",
"oracle": "0",
"previous": "0000000000000000000000000000000000000000000000000000000000000000",
"link": "90f28436423396887ccb08362b62061ca4b3c5a297a84e30f405e8973f652484",
"message": "0000000000000000000000000000000000000000000000000000000000000000",
"data": "Rd0hfNn/ife2TO2kiGzGjd6d+keopCLRZeLOb5qDT60AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANUprp6GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGgb9SU8ZGcvxUyT07W5og0olly4+AunBGDtP5nLVHvVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgb9SU8ZGcvxUyT07W5og0olly4+AunBGDtP5nLVHvVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANRTEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUUxDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"povHeight": 0,
"timestamp": 1553990410,
"extra": "0000000000000000000000000000000000000000000000000000000000000000",
"representative": "qlc_1t1uynkmrs597z4ns6ymppwt65baksgdjy1dnw483ubzm97oayyo38ertg44",
"work": "000000000048f5b9",
"signature": "d468c4c750eca3cb3a4005918f4dba4b72f4882a39caafc057d32f120e54e8173cd548f1779890cdff02f11ac2e09d62003327b0e027d2c09d78db6302b9fc07"
}`

testJsonMintage = `{
"type": "ContractSend",
"token": "a7e8fa30c063e96a489a47bc43909505bd86735da4a109dca28be936118a8582",
"address": "qlc_3qjky1ptg9qkzm8iertdzrnx9btjbaea33snh1w4g395xqqczye4kgcfyfs1",
"balance": "0",
"previous": "0000000000000000000000000000000000000000000000000000000000000000",
"link": "0000000000000000000000000000000000000000000000000000000000000000",
"message": "0000000000000000000000000000000000000000000000000000000000000000",
"data": "RtDOi6fo+jDAY+lqSJpHvEOQlQW9hnNdpKEJ3KKL6TYRioWCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVKa6ehgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1FMQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANRTEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"quota": 0,
"timestamp": 1553990401,
"extra": "0000000000000000000000000000000000000000000000000000000000000000",
"representative": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"work": "0000000000000000",
"signature": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
}`
"type": "ContractSend",
"token": "a7e8fa30c063e96a489a47bc43909505bd86735da4a109dca28be936118a8582",
"address": "qlc_3qjky1ptg9qkzm8iertdzrnx9btjbaea33snh1w4g395xqqczye4kgcfyfs1",
"balance": "0",
"vote": "0",
"network": "0",
"storage": "0",
"oracle": "0",
"previous": "0000000000000000000000000000000000000000000000000000000000000000",
"link": "0000000000000000000000000000000000000000000000000000000000000000",
"message": "0000000000000000000000000000000000000000000000000000000000000000",
"data": "6TrdxKfo+jDAY+lqSJpHvEOQlQW9hnNdpKEJ3KKL6TYRioWCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVKa6ehgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAi/hsg/tL+59Jubj6WTyM9BKMniFyDEh1ZbUvxmQKno8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUUxDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1FMQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"povHeight": 0,
"timestamp": 1553990401,
"extra": "0000000000000000000000000000000000000000000000000000000000000000",
"representative": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"work": "000000000048f5b9",
"signature": "296a9af6b30d6b05216a4cb86996a54442d1e8d0e6fd7ad7636f294d31475474ec61147ab9524a8f98d9c110852591910f95cede1b125752c6217d3b6e8a4906"
}`

testJsonGenesis = `{
"type": "ContractReward",
"token": "a7e8fa30c063e96a489a47bc43909505bd86735da4a109dca28be936118a8582",
"address": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"balance": "60000000000000000",
"previous": "0000000000000000000000000000000000000000000000000000000000000000",
"link": "f1042ef1472b02ee61048cf4eba923b81d0a64876665888b44bb2c46534f9655",
"message": "0000000000000000000000000000000000000000000000000000000000000000",
"quota": 0,
"data": "p+j6MMBj6WpImke8Q5CVBb2Gc12koQncoovpNhGKhYIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANUprp6GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACL+GyD+0v7n0m5uPpZPIz0EoyeIXIMSHVltS/GZAqejzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUUxDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1FMQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"timestamp": 1553990410,
"extra": "0000000000000000000000000000000000000000000000000000000000000000",
"representative": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"work": "000000000048f5b9",
"signature": "e89c3f7e28a51b5fed0af6cae206a82bcae436576c08db5e056a168e4337aa803d8b38a6d0438f377e57ece1d83cbf18a4cab9bc176bf640d1c62452e5c0f003"
}`
"type": "ContractReward",
"token": "a7e8fa30c063e96a489a47bc43909505bd86735da4a109dca28be936118a8582",
"address": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"balance": "60000000000000000",
"vote": "0",
"network": "0",
"storage": "0",
"oracle": "0",
"previous": "0000000000000000000000000000000000000000000000000000000000000000",
"link": "67513e803863279bc62d8e49a087b623895c8e2b21160a874f337ce147c859f1",
"message": "0000000000000000000000000000000000000000000000000000000000000000",
"data": "p+j6MMBj6WpImke8Q5CVBb2Gc12koQncoovpNhGKhYIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANUprp6GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACL+GyD+0v7n0m5uPpZPIz0EoyeIXIMSHVltS/GZAqejzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+GyD+0v7n0m5uPpZPIz0EoyeIXIMSHVltS/GZAqejzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANRTEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUUxDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"povHeight": 0,
"timestamp": 1553990410,
"extra": "0000000000000000000000000000000000000000000000000000000000000000",
"representative": "qlc_3hw8s1zubhxsykfsq5x7kh6eyibas9j3ga86ixd7pnqwes1cmt9mqqrngap4",
"work": "000000000048f5b9",
"signature": "60f7265b7379cc41d7ec533a4d2de08840e8d15d63599aa7e665c12d199d91b6ead07ab4a2b437e3e3957e60cf63bb79dcb1a82670339f7b3568b5207fa83b0d"
}`

units = map[string]*big.Int{
"qlc": big.NewInt(1),
Expand Down
37 changes: 18 additions & 19 deletions common/genesis_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,45 +8,44 @@
package common

import (
"github.com/qlcchain/go-qlc/common/types"
"github.com/qlcchain/go-qlc/common/util"
"math/big"
"reflect"
"testing"

"github.com/qlcchain/go-qlc/common/types"
"github.com/qlcchain/go-qlc/common/util"
)

func TestGenesisBlock(t *testing.T) {
h, _ := types.NewHash("758f79b656340c329cb5b11302865c5ff0b0c99fd8a268d6b8760170e33e8cd1")
genesis := GenesisBlock()
h2 := genesis.GetHash()
h, _ := types.NewHash("8858a2b2563f6a702690beb4f29b61a88fc5a56dc50f3a26f2c97db1bf99c114")

h2 := genesisBlock.GetHash()
if h2 != h {
t.Log(util.ToString(genesis))
t.Log(util.ToString(genesisBlock))
t.Fatal("invalid genesis block", h2.String(), h.String())
}

h3, _ := types.NewHash("bf1cb34e79f8739367ad7de4a16c87c0e72ea483521fec0f0ddf7b5e90d03abd")
mintage := GenesisMintageBlock()
h4 := mintage.GetHash()
h3, _ := types.NewHash("90f28436423396887ccb08362b62061ca4b3c5a297a84e30f405e8973f652484")
h4 := genesisMintageBlock.GetHash()
if h3 != h4 {
t.Fatal(h3.String(), h4.String())
t.Log(util.ToIndentString(genesisMintageBlock))
t.Fatal("invalid genesis mintage block", h3.String(), h4.String())
}
}

func TestGenesisBlock2(t *testing.T) {
h, _ := types.NewHash("a217c8d4374377562e891d0f6b50fcdcd02c68ab7fe7d72efd14ea5c4136a214")
genesis := testGenesisBlock
h2 := genesis.GetHash()
h, _ := types.NewHash("b14e95d66841ea82f77d5293a1e477691fe66e9c1a68db92d2bb040a2b67ba71")

h2 := testGenesisBlock.GetHash()
if h2 != h {
t.Log(util.ToString(genesis))
t.Log(util.ToString(testGenesisBlock))
t.Fatal("invalid genesis block", h2.String(), h.String())
}

h3, _ := types.NewHash("f1042ef1472b02ee61048cf4eba923b81d0a64876665888b44bb2c46534f9655")
mintage := testGenesisMintageBlock
h4 := mintage.GetHash()
h3, _ := types.NewHash("67513e803863279bc62d8e49a087b623895c8e2b21160a874f337ce147c859f1")
h4 := testGenesisMintageBlock.GetHash()
if h3 != h4 {
t.Fatal(h3.String(), h4.String())
t.Log(util.ToIndentString(testGenesisMintageBlock))
t.Fatal("invalid genesis mintage block", h3.String(), h4.String())
}
}

Expand Down
2 changes: 1 addition & 1 deletion common/types/balance.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
)

func init() {
msgp.RegisterExtension(BalanceExtensionType, func() msgp.Extension { return new(Address) })
msgp.RegisterExtension(BalanceExtensionType, func() msgp.Extension { return new(Balance) })
}

const (
Expand Down
44 changes: 17 additions & 27 deletions common/types/block_state.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,17 @@ type StateBlock struct {
Token Hash `msg:"token,extension" json:"token"`
Address Address `msg:"address,extension" json:"address"`
Balance Balance `msg:"balance,extension" json:"balance"`
Vote Balance `msg:"vote,extension" json:"vote"`
Network Balance `msg:"network,extension" json:"network"`
Storage Balance `msg:"storage,extension" json:"storage"`
Oracle Balance `msg:"oracle,extension" json:"oracle"`
Previous Hash `msg:"previous,extension" json:"previous"`
Link Hash `msg:"link,extension" json:"link"`
Sender []byte `msg:"sender" json:"sender,omitempty"`
Receiver []byte `msg:"receiver" json:"receiver,omitempty"`
Message Hash `msg:"message,extension" json:"message,omitempty"`
Data []byte `msg:"data" json:"data,omitempty"`
Quota int64 `msg:"quota" json:"quota"`
PoVHeight uint64 `msg:"povHeight" json:"povHeight"`
Timestamp int64 `msg:"timestamp" json:"timestamp"`
Extra Hash `msg:"extra,extension" json:"extra,omitempty"`
Representative Address `msg:"representative,extension" json:"representative"`
Expand All @@ -28,8 +32,10 @@ type StateBlock struct {

func (b *StateBlock) GetHash() Hash {
t := []byte{byte(b.Type)}
hash, _ := HashBytes(t, b.Token[:], b.Address[:], b.Balance.Bytes(), b.Previous[:], b.Link[:], b.Sender,
b.Receiver, b.Message[:], b.Data, util.Int2Bytes(b.Quota), util.Int2Bytes(b.Timestamp), b.Extra[:], b.Representative[:])
hash, _ := HashBytes(t, b.Token[:], b.Address[:], b.Balance.Bytes(), b.Vote.Bytes(), b.Network.Bytes(),
b.Storage.Bytes(), b.Oracle.Bytes(), b.Previous[:], b.Link[:], b.Sender, b.Receiver, b.Message[:], b.Data,
util.Int2Bytes(b.Timestamp), util.Uint64ToBytes(b.PoVHeight),
b.Extra[:], b.Representative[:])
return hash
}

Expand Down Expand Up @@ -144,32 +150,16 @@ func (b *StateBlock) IsContractBlock() bool {
}

func (b *StateBlock) Clone() *StateBlock {
clone := StateBlock{
//Type: b.Type,
//Token: b.Token,
//Address: b.Address,
//Balance: b.Balance,
//Previous: b.Previous,
//Link: b.Link,
//Sender: b.Sender,
//Receiver: b.Receiver,
//Message: b.Message,
//Data: b.Data,
//Quota: b.Quota,
//Timestamp: b.Timestamp,
//Extra: b.Extra,
//Representative: b.Representative,
//Work: b.Work,
//Signature: b.Signature,
}
clone := StateBlock{}
bytes, _ := b.Serialize()
_ = clone.Deserialize(bytes)
return &clone
}

//go:generate msgp
type BlockExtra struct {
KeyHash Hash `msg:"key,extension" json:"key"`
Abi []byte `msg:"abi" json:"abi"`
Issuer Address `msg:"issuer,extension" json:"issuer"`
}
//
////go:generate msgp
//type BlockExtra struct {
// KeyHash Hash `msg:"key,extension" json:"key"`
// Abi []byte `msg:"abi" json:"abi"`
// Issuer Address `msg:"issuer,extension" json:"issuer"`
//}
Loading

0 comments on commit a13cd2b

Please sign in to comment.