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
d2b3071b
Commit
d2b3071b
authored
Jan 09, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
db console is now a general console.
parent
92b6667b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
41 additions
and
16 deletions
+41
-16
dagger.go
dagger.go
+33
-12
db_query_interface.go
db_query_interface.go
+5
-0
ethereum.go
ethereum.go
+3
-4
No files found.
dagger.go
View file @
d2b3071b
...
...
@@ -6,6 +6,7 @@ import (
"math/rand"
"time"
"github.com/obscuren/sha3"
"hash"
)
type
Dagger
struct
{
...
...
@@ -27,8 +28,11 @@ func (dag *Dagger) Search(diff *big.Int) *big.Int {
for
i
:=
0
;
i
<
1000
;
i
++
{
if
dag
.
Eval
(
rnd
)
.
Cmp
(
obj
)
<
0
{
fmt
.
Println
(
"Found result! i = "
,
i
)
fmt
.
Println
(
"Found result! nonce = "
,
rnd
)
return
rnd
}
else
{
fmt
.
Println
(
"Not found :( nonce = "
,
rnd
)
}
rnd
=
rnd
.
Add
(
rnd
,
big
.
NewInt
(
1
))
...
...
@@ -37,6 +41,16 @@ func (dag *Dagger) Search(diff *big.Int) *big.Int {
return
big
.
NewInt
(
0
)
}
func
DaggerVerify
(
hash
,
diff
,
nonce
*
big
.
Int
)
bool
{
dagger
:=
&
Dagger
{}
dagger
.
hash
=
hash
obj
:=
BigPow
(
2
,
256
)
obj
=
obj
.
Div
(
obj
,
diff
)
return
dagger
.
Eval
(
nonce
)
.
Cmp
(
obj
)
<
0
}
func
(
dag
*
Dagger
)
Node
(
L
uint64
,
i
uint64
)
*
big
.
Int
{
if
L
==
i
{
return
dag
.
hash
...
...
@@ -63,16 +77,21 @@ func (dag *Dagger) Node(L uint64, i uint64) *big.Int {
d
.
Write
(
big
.
NewInt
(
int64
(
i
))
.
Bytes
())
d
.
Write
(
big
.
NewInt
(
int64
(
k
))
.
Bytes
())
b
.
SetBytes
(
d
.
Sum
(
nil
))
b
.
SetBytes
(
Sum
(
d
))
pk
:=
b
.
Uint64
()
&
((
1
<<
((
L
-
1
)
*
3
))
-
1
)
sha
.
Write
(
dag
.
Node
(
L
-
1
,
pk
)
.
Bytes
())
}
ret
.
SetBytes
(
sha
.
Sum
(
nil
))
ret
.
SetBytes
(
Sum
(
sha
))
return
ret
}
func
Sum
(
sha
hash
.
Hash
)
[]
byte
{
in
:=
make
([]
byte
,
32
)
return
sha
.
Sum
(
in
)
}
func
(
dag
*
Dagger
)
Eval
(
N
*
big
.
Int
)
*
big
.
Int
{
pow
:=
BigPow
(
2
,
26
)
dag
.
xn
=
N
.
Div
(
N
,
pow
)
...
...
@@ -81,10 +100,11 @@ func (dag *Dagger) Eval(N *big.Int) *big.Int {
sha
.
Reset
()
ret
:=
new
(
big
.
Int
)
doneChan
:=
make
(
chan
bool
,
3
)
//
doneChan := make(chan bool, 3)
for
k
:=
0
;
k
<
4
;
k
++
{
go
func
(
_k
int
)
{
//go func(_k int) {
_k
:=
k
d
:=
sha3
.
NewKeccak224
()
b
:=
new
(
big
.
Int
)
...
...
@@ -94,17 +114,18 @@ func (dag *Dagger) Eval(N *big.Int) *big.Int {
d
.
Write
(
N
.
Bytes
())
d
.
Write
(
big
.
NewInt
(
int64
(
_k
))
.
Bytes
())
b
.
SetBytes
(
d
.
Sum
(
nil
))
b
.
SetBytes
(
Sum
(
d
))
pk
:=
(
b
.
Uint64
()
&
0x1ffffff
)
sha
.
Write
(
dag
.
Node
(
9
,
pk
)
.
Bytes
())
doneChan
<-
true
}(
k
)
//
doneChan <- true
//
}(k)
}
for
k
:=
0
;
k
<
4
;
k
++
{
<-
doneChan
}
//for k := 0; k < 4; k++ {
// <- doneChan
//}
return
ret
.
SetBytes
(
sha
.
Sum
(
nil
))
return
ret
.
SetBytes
(
Sum
(
sha
))
}
db_query_interface.go
View file @
d2b3071b
...
...
@@ -32,6 +32,9 @@ func (i *DbInterface) ValidateInput(action string, argumentLength int) error {
case
action
==
"get"
&&
argumentLength
!=
1
:
err
=
true
expArgCount
=
1
case
action
==
"dag"
&&
argumentLength
!=
2
:
err
=
true
expArgCount
=
2
}
if
err
{
...
...
@@ -74,6 +77,8 @@ func (i *DbInterface) ParseInput(input string) bool {
fmt
.
Println
(
i
.
trie
.
root
)
case
"print"
:
i
.
db
.
Print
()
case
"dag"
:
fmt
.
Println
(
DaggerVerify
(
Big
(
tokens
[
1
]),
BigPow
(
2
,
36
),
Big
(
tokens
[
2
])))
case
"exit"
,
"quit"
,
"q"
:
return
false
case
"help"
:
...
...
ethereum.go
View file @
d2b3071b
...
...
@@ -6,6 +6,7 @@ import (
"os/signal"
"flag"
"runtime"
_
"math/big"
)
const
Debug
=
true
...
...
@@ -13,7 +14,7 @@ const Debug = true
var
StartDBQueryInterface
bool
var
StartMining
bool
func
Init
()
{
flag
.
BoolVar
(
&
StartDBQueryInterface
,
"
db"
,
false
,
"start db query
interface"
)
flag
.
BoolVar
(
&
StartDBQueryInterface
,
"
c"
,
false
,
"console
interface"
)
flag
.
BoolVar
(
&
StartMining
,
"mine"
,
false
,
"start dagger mining"
)
flag
.
Parse
()
...
...
@@ -46,9 +47,7 @@ func main() {
dbInterface
.
Start
()
}
else
if
StartMining
{
dagger
:=
&
Dagger
{}
seed
:=
dagger
.
Search
(
BigPow
(
2
,
36
))
fmt
.
Println
(
"dagger res = "
,
seed
)
dagger
.
Search
(
BigPow
(
2
,
36
))
}
else
{
fmt
.
Println
(
"[DBUG]: Starting Ethereum"
)
server
,
err
:=
NewServer
()
...
...
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