Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
0edcbc69
Commit
0edcbc69
authored
Dec 29, 2013
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated serialisation
parent
0747aa3a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
31 additions
and
11 deletions
+31
-11
block.go
block.go
+31
-11
No files found.
block.go
View file @
0edcbc69
package
main
import
(
"fmt"
_
"fmt"
"time"
_
"bytes"
)
...
...
@@ -17,14 +17,24 @@ type Block struct {
// state xxx
difficulty
uint32
// Creation time
time
time
.
Time
time
int64
nonce
uint32
// List of transactions and/or contracts
transactions
[]
*
Transaction
extra
string
}
// New block takes a raw encoded string
func
NewBlock
(
raw
[]
byte
)
*
Block
{
block
:=
&
Block
{}
block
.
UnmarshalRlp
(
raw
)
return
block
}
// Creates a new block. This is currently for testing
func
New
Block
(
/* TODO use raw data */
transactions
[]
*
Transaction
)
*
Block
{
func
Create
Block
(
/* TODO use raw data */
transactions
[]
*
Transaction
)
*
Block
{
block
:=
&
Block
{
// Slice of transactions to include in this block
transactions
:
transactions
,
...
...
@@ -33,8 +43,7 @@ func NewBlock(/* TODO use raw data */transactions []*Transaction) *Block {
coinbase
:
"me"
,
difficulty
:
10
,
nonce
:
0
,
time
:
time
.
Now
(),
time
:
time
.
Now
()
.
Unix
(),
}
return
block
...
...
@@ -65,15 +74,18 @@ func (block *Block) MarshalRlp() []byte {
block
.
coinbase
,
// root state
""
,
string
(
Sha256Bin
([]
byte
(
RlpEncode
(
encTx
)))),
// Sha of tx
string
(
Sha256Bin
([]
byte
(
Encode
(
encTx
)))),
block
.
difficulty
,
block
.
time
.
String
(
),
uint64
(
block
.
time
),
block
.
nonce
,
// extra?
block
.
extra
,
}
// TODO
uncles
:=
[]
interface
{}{}
// Encode a slice interface which contains the header and the list of transactions.
return
Encode
([]
interface
{}{
header
,
encTx
})
return
Encode
([]
interface
{}{
header
,
encTx
,
uncles
})
}
func
(
block
*
Block
)
UnmarshalRlp
(
data
[]
byte
)
{
...
...
@@ -109,13 +121,21 @@ func (block *Block) UnmarshalRlp(data []byte) {
block
.
difficulty
=
uint32
(
difficulty
)
}
if
time
,
ok
:=
header
[
7
]
.
([]
byte
);
ok
{
fmt
.
Sprintf
(
"Time is: "
,
string
(
time
))
// It's either 8bit or 64
if
time
,
ok
:=
header
[
7
]
.
(
uint8
);
ok
{
block
.
time
=
int64
(
time
)
}
if
time
,
ok
:=
header
[
7
]
.
(
uint64
);
ok
{
block
.
time
=
int64
(
time
)
}
if
nonce
,
ok
:=
header
[
8
]
.
(
uint8
);
ok
{
block
.
nonce
=
uint32
(
nonce
)
}
if
extra
,
ok
:=
header
[
9
]
.
([]
byte
);
ok
{
block
.
extra
=
string
(
extra
)
}
}
if
txSlice
,
ok
:=
slice
[
1
]
.
([]
interface
{});
ok
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment