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
9c2b8786
Commit
9c2b8786
authored
Nov 04, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Sha addresses
parent
a82b89e2
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
18 additions
and
4 deletions
+18
-4
bloom9.go
chain/bloom9.go
+6
-4
bloom9_test.go
chain/bloom9_test.go
+12
-0
No files found.
chain/bloom9.go
View file @
9c2b8786
...
...
@@ -3,24 +3,25 @@ package chain
import
(
"math/big"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/state"
)
func
CreateBloom
(
block
*
Block
)
[]
byte
{
bin
:=
new
(
big
.
Int
)
bin
.
Or
(
bin
,
bloom9
(
block
.
Coinbase
))
bin
.
Or
(
bin
,
bloom9
(
crypto
.
Sha3
(
block
.
Coinbase
)
))
for
_
,
receipt
:=
range
block
.
Receipts
()
{
bin
.
Or
(
bin
,
LogsBloom
(
receipt
.
logs
))
}
return
bin
.
Bytes
(
)
return
ethutil
.
LeftPadBytes
(
bin
.
Bytes
(),
64
)
}
func
LogsBloom
(
logs
state
.
Logs
)
*
big
.
Int
{
bin
:=
new
(
big
.
Int
)
for
_
,
log
:=
range
logs
{
data
:=
[][]
byte
{
log
.
Address
}
data
:=
[][]
byte
{
crypto
.
Sha3
(
log
.
Address
)
}
for
_
,
topic
:=
range
log
.
Topics
{
data
=
append
(
data
,
topic
)
}
...
...
@@ -41,7 +42,8 @@ func bloom9(b []byte) *big.Int {
r
:=
new
(
big
.
Int
)
for
_
,
i
:=
range
[]
int
{
0
,
2
,
4
}
{
t
:=
big
.
NewInt
(
1
)
r
.
Or
(
r
,
t
.
Lsh
(
t
,
uint
(
b
[
i
+
1
])
+
256
*
(
uint
(
b
[
i
])
&
1
)))
b
:=
uint
(
b
[
i
+
1
])
+
256
*
(
uint
(
b
[
i
])
&
1
)
r
.
Or
(
r
,
t
.
Lsh
(
t
,
b
))
}
return
r
...
...
chain/bloom9_test.go
View file @
9c2b8786
package
chain
import
(
"fmt"
"testing"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/state"
"github.com/ethgo.old/ethutil"
)
func
TestBloom9
(
t
*
testing
.
T
)
{
...
...
@@ -17,3 +20,12 @@ func TestBloom9(t *testing.T) {
t
.
Errorf
(
"Bloom lookup failed"
)
}
}
func
TestAddress
(
t
*
testing
.
T
)
{
block
:=
&
Block
{}
block
.
Coinbase
=
ethutil
.
Hex2Bytes
(
"22341ae42d6dd7384bc8584e50419ea3ac75b83f"
)
fmt
.
Printf
(
"%x
\n
"
,
crypto
.
Sha3
(
block
.
Coinbase
))
bin
:=
CreateBloom
(
block
)
fmt
.
Printf
(
"bin = %x
\n
"
,
ethutil
.
LeftPadBytes
(
bin
,
64
))
}
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