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
069c87b9
Commit
069c87b9
authored
Mar 20, 2015
by
Felix Lange
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
whisper: use common.Hash
parent
7c4ff3ab
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
34 additions
and
41 deletions
+34
-41
envelope.go
whisper/envelope.go
+14
-9
sort.go
whisper/sort.go
+6
-2
sort_test.go
whisper/sort_test.go
+10
-6
whisper.go
whisper/whisper.go
+4
-24
No files found.
whisper/envelope.go
View file @
069c87b9
...
...
@@ -18,26 +18,31 @@ const (
type
Envelope
struct
{
Expiry
uint32
// Whisper protocol specifies int32, really should be int64
T
tl
uint32
// ^^^^^^
T
TL
uint32
// ^^^^^^
Topics
[][]
byte
Data
[]
byte
Nonce
uint32
hash
Hash
hash
common
.
Hash
}
func
(
self
*
Envelope
)
Hash
()
Hash
{
if
self
.
hash
==
EmptyHash
{
func
(
self
*
Envelope
)
Hash
()
common
.
Hash
{
if
(
self
.
hash
==
common
.
Hash
{})
{
enc
,
_
:=
rlp
.
EncodeToBytes
(
self
)
self
.
hash
=
H
(
crypto
.
Sha3
(
enc
)
)
self
.
hash
=
crypto
.
Sha3Hash
(
enc
)
}
return
self
.
hash
}
func
NewEnvelope
(
ttl
time
.
Duration
,
topics
[][]
byte
,
data
*
Message
)
*
Envelope
{
exp
:=
time
.
Now
()
.
Add
(
ttl
)
return
&
Envelope
{
uint32
(
exp
.
Unix
()),
uint32
(
ttl
.
Seconds
()),
topics
,
data
.
Bytes
(),
0
,
Hash
{}}
return
&
Envelope
{
Expiry
:
uint32
(
exp
.
Unix
()),
TTL
:
uint32
(
ttl
.
Seconds
()),
Topics
:
topics
,
Data
:
data
.
Bytes
(),
Nonce
:
0
,
}
}
func
(
self
*
Envelope
)
Seal
(
pow
time
.
Duration
)
{
...
...
@@ -104,7 +109,7 @@ func (self *Envelope) valid() bool {
}
func
(
self
*
Envelope
)
withoutNonce
()
interface
{}
{
return
[]
interface
{}{
self
.
Expiry
,
self
.
T
tl
,
self
.
Topics
,
self
.
Data
}
return
[]
interface
{}{
self
.
Expiry
,
self
.
T
TL
,
self
.
Topics
,
self
.
Data
}
}
// rlpenv is an Envelope but is not an rlp.Decoder.
...
...
@@ -119,6 +124,6 @@ func (self *Envelope) DecodeRLP(s *rlp.Stream) error {
if
err
:=
rlp
.
DecodeBytes
(
raw
,
(
*
rlpenv
)(
self
));
err
!=
nil
{
return
err
}
self
.
hash
=
H
(
crypto
.
Sha3
(
raw
)
)
self
.
hash
=
crypto
.
Sha3Hash
(
raw
)
return
nil
}
whisper/sort.go
View file @
069c87b9
package
whisper
import
"sort"
import
(
"sort"
"github.com/ethereum/go-ethereum/common"
)
type
sortedKeys
struct
{
k
[]
int32
...
...
@@ -10,7 +14,7 @@ func (self *sortedKeys) Len() int { return len(self.k) }
func
(
self
*
sortedKeys
)
Less
(
i
,
j
int
)
bool
{
return
self
.
k
[
i
]
<
self
.
k
[
j
]
}
func
(
self
*
sortedKeys
)
Swap
(
i
,
j
int
)
{
self
.
k
[
i
],
self
.
k
[
j
]
=
self
.
k
[
j
],
self
.
k
[
i
]
}
func
sortKeys
(
m
map
[
int32
]
Hash
)
[]
int32
{
func
sortKeys
(
m
map
[
int32
]
common
.
Hash
)
[]
int32
{
sorted
:=
new
(
sortedKeys
)
sorted
.
k
=
make
([]
int32
,
len
(
m
))
i
:=
0
...
...
whisper/sort_test.go
View file @
069c87b9
package
whisper
import
"testing"
import
(
"testing"
"github.com/ethereum/go-ethereum/common"
)
func
TestSorting
(
t
*
testing
.
T
)
{
m
:=
map
[
int32
]
Hash
{
1
:
HS
(
"1"
)
,
3
:
HS
(
"3"
)
,
2
:
HS
(
"2"
)
,
5
:
HS
(
"5"
)
,
m
:=
map
[
int32
]
common
.
Hash
{
1
:
{
1
}
,
3
:
{
3
}
,
2
:
{
2
}
,
5
:
{
5
}
,
}
exp
:=
[]
int32
{
1
,
2
,
3
,
5
}
res
:=
sortKeys
(
m
)
...
...
whisper/whisper.go
View file @
069c87b9
package
whisper
import
(
"bytes"
"crypto/ecdsa"
"errors"
"sync"
"time"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/crypto/ecies"
"github.com/ethereum/go-ethereum/event/filter"
...
...
@@ -15,26 +15,6 @@ import (
"gopkg.in/fatih/set.v0"
)
// MOVE ME
type
Hash
struct
{
hash
string
}
var
EmptyHash
Hash
func
H
(
hash
[]
byte
)
Hash
{
return
Hash
{
string
(
hash
)}
}
func
HS
(
hash
string
)
Hash
{
return
Hash
{
hash
}
}
func
(
self
Hash
)
Compare
(
other
Hash
)
int
{
return
bytes
.
Compare
([]
byte
(
self
.
hash
),
[]
byte
(
other
.
hash
))
}
// MOVE ME END
const
(
statusMsg
=
0x0
envelopesMsg
=
0x01
...
...
@@ -55,7 +35,7 @@ type Whisper struct {
filters
*
filter
.
Filters
mmu
sync
.
RWMutex
messages
map
[
Hash
]
*
Envelope
messages
map
[
common
.
Hash
]
*
Envelope
expiry
map
[
uint32
]
*
set
.
SetNonTS
quit
chan
struct
{}
...
...
@@ -65,7 +45,7 @@ type Whisper struct {
func
New
()
*
Whisper
{
whisper
:=
&
Whisper
{
messages
:
make
(
map
[
Hash
]
*
Envelope
),
messages
:
make
(
map
[
common
.
Hash
]
*
Envelope
),
filters
:
filter
.
New
(),
expiry
:
make
(
map
[
uint32
]
*
set
.
SetNonTS
),
quit
:
make
(
chan
struct
{}),
...
...
@@ -239,7 +219,7 @@ func (self *Whisper) expire() {
}
hashSet
.
Each
(
func
(
v
interface
{})
bool
{
delete
(
self
.
messages
,
v
.
(
Hash
))
delete
(
self
.
messages
,
v
.
(
common
.
Hash
))
return
true
})
self
.
expiry
[
then
]
.
Clear
()
...
...
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