mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-24 13:46:43 +00:00
commit
a83d648597
34 changed files with 2046 additions and 63 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -36,3 +36,4 @@ profile.tmp
|
|||
profile.cov
|
||||
|
||||
.idea/workspace.xml
|
||||
*.idea/
|
||||
BIN
BUILDS-GEXP/gexp-darwin-386
Executable file
BIN
BUILDS-GEXP/gexp-darwin-386
Executable file
Binary file not shown.
BIN
BUILDS-GEXP/gexp-darwin-amd64
Executable file
BIN
BUILDS-GEXP/gexp-darwin-amd64
Executable file
Binary file not shown.
BIN
BUILDS-GEXP/gexp-linux-386
Executable file
BIN
BUILDS-GEXP/gexp-linux-386
Executable file
Binary file not shown.
BIN
BUILDS-GEXP/gexp-linux-amd64
Executable file
BIN
BUILDS-GEXP/gexp-linux-amd64
Executable file
Binary file not shown.
BIN
BUILDS-GEXP/gexp-linux-arm
Executable file
BIN
BUILDS-GEXP/gexp-linux-arm
Executable file
Binary file not shown.
BIN
BUILDS-GEXP/gexp-windows-386.exe
Executable file
BIN
BUILDS-GEXP/gexp-windows-386.exe
Executable file
Binary file not shown.
BIN
BUILDS-GEXP/gexp-windows-amd64.exe
Executable file
BIN
BUILDS-GEXP/gexp-windows-amd64.exe
Executable file
Binary file not shown.
BIN
BUILDS-GEXP/gexp1.1.3-go1.5.1/gexp-darwin-386
Executable file
BIN
BUILDS-GEXP/gexp1.1.3-go1.5.1/gexp-darwin-386
Executable file
Binary file not shown.
BIN
BUILDS-GEXP/gexp1.1.3-go1.5.1/gexp-darwin-amd64
Executable file
BIN
BUILDS-GEXP/gexp1.1.3-go1.5.1/gexp-darwin-amd64
Executable file
Binary file not shown.
BIN
BUILDS-GEXP/gexp1.1.3-go1.5.1/gexp-linux-386
Executable file
BIN
BUILDS-GEXP/gexp1.1.3-go1.5.1/gexp-linux-386
Executable file
Binary file not shown.
BIN
BUILDS-GEXP/gexp1.1.3-go1.5.1/gexp-linux-amd64
Executable file
BIN
BUILDS-GEXP/gexp1.1.3-go1.5.1/gexp-linux-amd64
Executable file
Binary file not shown.
BIN
BUILDS-GEXP/gexp1.1.3-go1.5.1/gexp-linux-arm
Executable file
BIN
BUILDS-GEXP/gexp1.1.3-go1.5.1/gexp-linux-arm
Executable file
Binary file not shown.
BIN
BUILDS-GEXP/gexp1.1.3-go1.5.1/gexp-windows-386.exe
Executable file
BIN
BUILDS-GEXP/gexp1.1.3-go1.5.1/gexp-windows-386.exe
Executable file
Binary file not shown.
BIN
BUILDS-GEXP/gexp1.1.3-go1.5.1/gexp-windows-amd64.exe
Executable file
BIN
BUILDS-GEXP/gexp1.1.3-go1.5.1/gexp-windows-amd64.exe
Executable file
Binary file not shown.
|
|
@ -16,7 +16,7 @@ master | [ branch.
|
||||
|
||||
* [Docker](https://registry.hub.docker.com/u/expanse/client-go/)
|
||||
* [Docker](https://registry.hub.docker.com/u/expanse/go-expanse/)
|
||||
* [OS X](http://build.ethdev.com/builds/OSX%20Go%20develop%20branch/Mist-OSX-latest.dmg)
|
||||
* Ubuntu
|
||||
[trusty](https://build.ethdev.com/builds/Linux%20Go%20develop%20deb%20i386-trusty/latest/) |
|
||||
|
|
@ -71,3 +71,4 @@ Commits that are directly based on master are simply ignored.
|
|||
See [Developers' Guide](https://github.com/expanse-project/go-expanse/wiki/Developers'-Guide)
|
||||
for more details on configuring your environment, testing, and
|
||||
dependency management.
|
||||
|
||||
|
|
|
|||
|
|
@ -48,10 +48,10 @@ import (
|
|||
|
||||
const (
|
||||
ClientIdentifier = "Gexp"
|
||||
Version = "1.1.2"
|
||||
Version = "1.1.3"
|
||||
VersionMajor = 1
|
||||
VersionMinor = 1
|
||||
VersionPatch = 2
|
||||
VersionPatch = 3
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
|
|||
|
|
@ -295,7 +295,7 @@ var (
|
|||
ListenPortFlag = cli.IntFlag{
|
||||
Name: "port",
|
||||
Usage: "Network listening port",
|
||||
Value: 60606,
|
||||
Value: 42786,
|
||||
}
|
||||
BootnodesFlag = cli.StringFlag{
|
||||
Name: "bootnodes",
|
||||
|
|
|
|||
|
|
@ -22,20 +22,20 @@ const (
|
|||
Disclaimer of Liabilites and Warranties
|
||||
=======================================
|
||||
|
||||
THE USER EXPRESSLY KNOWS AND AGREES THAT THE USER IS USING THE ETHEREUM PLATFORM AT THE USER’S SOLE
|
||||
THE USER EXPRESSLY KNOWS AND AGREES THAT THE USER IS USING THE EXPANSE PLATFORM AT THE USER’S SOLE
|
||||
RISK. THE USER REPRESENTS THAT THE USER HAS AN ADEQUATE UNDERSTANDING OF THE RISKS, USAGE AND
|
||||
INTRICACIES OF CRYPTOGRAPHIC TOKENS AND BLOCKCHAIN-BASED OPEN SOURCE SOFTWARE, ETH PLATFORM AND ETH.
|
||||
INTRICACIES OF CRYPTOGRAPHIC TOKENS AND BLOCKCHAIN-BASED OPEN SOURCE SOFTWARE, EXP PLATFORM AND EXP.
|
||||
THE USER ACKNOWLEDGES AND AGREES THAT, TO THE FULLEST EXTENT PERMITTED BY ANY APPLICABLE LAW, THE
|
||||
DISCLAIMERS OF LIABILITY CONTAINED HEREIN APPLY TO ANY AND ALL DAMAGES OR INJURY WHATSOEVER CAUSED
|
||||
BY OR RELATED TO RISKS OF, USE OF, OR INABILITY TO USE, ETH OR THE ETHEREUM PLATFORM UNDER ANY CAUSE
|
||||
BY OR RELATED TO RISKS OF, USE OF, OR INABILITY TO USE, EXP OR THE EXPANSE PLATFORM UNDER ANY CAUSE
|
||||
OR ACTION WHATSOEVER OF ANY KIND IN ANY JURISDICTION, INCLUDING, WITHOUT LIMITATION, ACTIONS FOR
|
||||
BREACH OF WARRANTY, BREACH OF CONTRACT OR TORT (INCLUDING NEGLIGENCE) AND THAT NEITHER STIFTUNG
|
||||
ETHEREUM NOR ETHEREUM TEAM SHALL BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY OR
|
||||
EXPANSE NOR EXPANSE TEAM SHALL BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY OR
|
||||
CONSEQUENTIAL DAMAGES, INCLUDING FOR LOSS OF PROFITS, GOODWILL OR DATA. SOME JURISDICTIONS DO NOT
|
||||
ALLOW THE EXCLUSION OF CERTAIN WARRANTIES OR THE LIMITATION OR EXCLUSION OF LIABILITY FOR CERTAIN
|
||||
TYPES OF DAMAGES. THEREFORE, SOME OF THE ABOVE LIMITATIONS IN THIS SECTION MAY NOT APPLY TO A USER.
|
||||
IN PARTICULAR, NOTHING IN THESE TERMS SHALL AFFECT THE STATUTORY RIGHTS OF ANY USER OR EXCLUDE
|
||||
INJURY ARISING FROM ANY WILLFUL MISCONDUCT OR FRAUD OF STIFTUNG ETHEREUM.
|
||||
INJURY ARISING FROM ANY WILLFUL MISCONDUCT OR FRAUD OF STIFTUNG EXPANSE.
|
||||
|
||||
Do you accept this agreement?`
|
||||
)
|
||||
|
|
|
|||
|
|
@ -20,4 +20,4 @@ import (
|
|||
"math/big"
|
||||
)
|
||||
|
||||
var BlockReward *big.Int = big.NewInt(6e+18)
|
||||
var BlockReward *big.Int = big.NewInt(8e+18)
|
||||
|
|
|
|||
|
|
@ -263,6 +263,7 @@ func (self *StateObject) Copy() *StateObject {
|
|||
stateObject.gasPool.Set(self.gasPool)
|
||||
stateObject.remove = self.remove
|
||||
stateObject.dirty = self.dirty
|
||||
stateObject.deleted = self.deleted
|
||||
|
||||
return stateObject
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
package state
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"math/big"
|
||||
"testing"
|
||||
|
||||
|
|
@ -117,3 +118,106 @@ func (s *StateSuite) TestSnapshot(c *checker.C) {
|
|||
|
||||
c.Assert(data1, checker.DeepEquals, res)
|
||||
}
|
||||
|
||||
// use testing instead of checker because checker does not support
|
||||
// printing/logging in tests (-check.vv does not work)
|
||||
func TestSnapshot2(t *testing.T) {
|
||||
db, _ := ethdb.NewMemDatabase()
|
||||
state := New(common.Hash{}, db)
|
||||
|
||||
stateobjaddr0 := toAddr([]byte("so0"))
|
||||
stateobjaddr1 := toAddr([]byte("so1"))
|
||||
var storageaddr common.Hash
|
||||
|
||||
data0 := common.BytesToHash([]byte{17})
|
||||
data1 := common.BytesToHash([]byte{18})
|
||||
|
||||
state.SetState(stateobjaddr0, storageaddr, data0)
|
||||
state.SetState(stateobjaddr1, storageaddr, data1)
|
||||
|
||||
// db, trie are already non-empty values
|
||||
so0 := state.GetStateObject(stateobjaddr0)
|
||||
so0.balance = big.NewInt(42)
|
||||
so0.nonce = 43
|
||||
so0.gasPool = big.NewInt(44)
|
||||
so0.code = []byte{'c', 'a', 'f', 'e'}
|
||||
so0.codeHash = so0.CodeHash()
|
||||
so0.remove = true
|
||||
so0.deleted = false
|
||||
so0.dirty = false
|
||||
state.SetStateObject(so0)
|
||||
|
||||
// and one with deleted == true
|
||||
so1 := state.GetStateObject(stateobjaddr1)
|
||||
so1.balance = big.NewInt(52)
|
||||
so1.nonce = 53
|
||||
so1.gasPool = big.NewInt(54)
|
||||
so1.code = []byte{'c', 'a', 'f', 'e', '2'}
|
||||
so1.codeHash = so1.CodeHash()
|
||||
so1.remove = true
|
||||
so1.deleted = true
|
||||
so1.dirty = true
|
||||
state.SetStateObject(so1)
|
||||
|
||||
so1 = state.GetStateObject(stateobjaddr1)
|
||||
if so1 != nil {
|
||||
t.Fatalf("deleted object not nil when getting")
|
||||
}
|
||||
|
||||
snapshot := state.Copy()
|
||||
state.Set(snapshot)
|
||||
|
||||
so0Restored := state.GetStateObject(stateobjaddr0)
|
||||
so1Restored := state.GetStateObject(stateobjaddr1)
|
||||
// non-deleted is equal (restored)
|
||||
compareStateObjects(so0Restored, so0, t)
|
||||
// deleted should be nil, both before and after restore of state copy
|
||||
if so1Restored != nil {
|
||||
t.Fatalf("deleted object not nil after restoring snapshot")
|
||||
}
|
||||
}
|
||||
|
||||
func compareStateObjects(so0, so1 *StateObject, t *testing.T) {
|
||||
if so0.address != so1.address {
|
||||
t.Fatalf("Address mismatch: have %v, want %v", so0.address, so1.address)
|
||||
}
|
||||
if so0.balance.Cmp(so1.balance) != 0 {
|
||||
t.Fatalf("Balance mismatch: have %v, want %v", so0.balance, so1.balance)
|
||||
}
|
||||
if so0.nonce != so1.nonce {
|
||||
t.Fatalf("Nonce mismatch: have %v, want %v", so0.nonce, so1.nonce)
|
||||
}
|
||||
if !bytes.Equal(so0.codeHash, so1.codeHash) {
|
||||
t.Fatalf("CodeHash mismatch: have %v, want %v", so0.codeHash, so1.codeHash)
|
||||
}
|
||||
if !bytes.Equal(so0.code, so1.code) {
|
||||
t.Fatalf("Code mismatch: have %v, want %v", so0.code, so1.code)
|
||||
}
|
||||
if !bytes.Equal(so0.initCode, so1.initCode) {
|
||||
t.Fatalf("InitCode mismatch: have %v, want %v", so0.initCode, so1.initCode)
|
||||
}
|
||||
|
||||
for k, v := range so1.storage {
|
||||
if so0.storage[k] != v {
|
||||
t.Fatalf("Storage key %s mismatch: have %v, want %v", k, so0.storage[k], v)
|
||||
}
|
||||
}
|
||||
for k, v := range so0.storage {
|
||||
if so1.storage[k] != v {
|
||||
t.Fatalf("Storage key %s mismatch: have %v, want none.", k, v)
|
||||
}
|
||||
}
|
||||
|
||||
if so0.gasPool.Cmp(so1.gasPool) != 0 {
|
||||
t.Fatalf("GasPool mismatch: have %v, want %v", so0.gasPool, so1.gasPool)
|
||||
}
|
||||
if so0.remove != so1.remove {
|
||||
t.Fatalf("Remove mismatch: have %v, want %v", so0.remove, so1.remove)
|
||||
}
|
||||
if so0.deleted != so1.deleted {
|
||||
t.Fatalf("Deleted mismatch: have %v, want %v", so0.deleted, so1.deleted)
|
||||
}
|
||||
if so0.dirty != so1.dirty {
|
||||
t.Fatalf("Dirty mismatch: have %v, want %v", so0.dirty, so1.dirty)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ func (self *StateTransition) BuyGas() error {
|
|||
return err
|
||||
}
|
||||
if sender.Balance().Cmp(mgval) < 0 {
|
||||
return fmt.Errorf("insufficient ETH for gas (%x). Req %v, has %v", sender.Address().Bytes()[:4], mgval, sender.Balance())
|
||||
return fmt.Errorf("insufficient EXP for gas (%x). Req %v, has %v", sender.Address().Bytes()[:4], mgval, sender.Balance())
|
||||
}
|
||||
if err = self.gp.SubGas(mgas, self.gasPrice); err != nil {
|
||||
return err
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
FROM ubuntu:utopic
|
||||
MAINTAINER caktux
|
||||
MAINTAINER chrisfranko
|
||||
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
|
||||
|
|
@ -12,11 +12,20 @@ RUN apt-get dist-upgrade -q -y
|
|||
RUN apt-get install -q -y unattended-upgrades
|
||||
|
||||
# Install Expanse
|
||||
RUN apt-get install -q -y software-properties-common
|
||||
RUN add-apt-repository ppa:expanse/expanse
|
||||
RUN add-apt-repository ppa:expanse/expanse-dev
|
||||
RUN apt-get update
|
||||
RUN apt-get install -q -y gexp
|
||||
RUN apt-get install -q -y curl git mercurial binutils bison gcc make libgmp3-dev build-essential
|
||||
|
||||
# Install Go
|
||||
RUN \
|
||||
mkdir -p /goroot && \
|
||||
curl https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz | tar xvzf - -C /goroot --strip-components=1
|
||||
|
||||
# Set environment variables.
|
||||
ENV GOROOT /goroot
|
||||
ENV GOPATH /gopath
|
||||
ENV PATH $GOROOT/bin:$GOPATH/bin:$PATH
|
||||
|
||||
RUN git clone http://www.github.com/expanse-project/go-expanse.git
|
||||
RUN cd go-expanse && git checkout develop && make gexp
|
||||
|
||||
# Install supervisor
|
||||
RUN apt-get install -q -y supervisor
|
||||
|
|
@ -25,7 +34,7 @@ RUN apt-get install -q -y supervisor
|
|||
ADD supervisord.conf supervisord.conf
|
||||
|
||||
EXPOSE 9656
|
||||
EXPOSE 60606
|
||||
EXPOSE 42786
|
||||
|
||||
CMD ["-n", "-c", "/supervisord.conf"]
|
||||
ENTRYPOINT ["/usr/bin/supervisord"]
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ nodaemon=false
|
|||
|
||||
[program:gexp]
|
||||
priority=30
|
||||
directory=/
|
||||
command=gexp --rpc
|
||||
directory=~/go-expanse/
|
||||
command=build/bin/gexp --rpc
|
||||
user=root
|
||||
autostart=true
|
||||
autorestart=true
|
||||
|
|
|
|||
|
|
@ -60,11 +60,11 @@ var (
|
|||
jsonlogger = logger.NewJsonLogger()
|
||||
|
||||
defaultBootNodes = []*discover.Node{
|
||||
// ETH/DEV Go Bootnodes
|
||||
discover.MustParseNode("enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@52.16.188.185:60606"),
|
||||
discover.MustParseNode("enode://de471bccee3d042261d52e9bff31458daecc406142b401d4cd848f677479f73104b9fdeb090af9583d3391b7f10cb2ba9e26865dd5fca4fcdc0fb1e3b723c786@54.94.239.50:60606"),
|
||||
// ETH/DEV cpp-expanse (poc-9.ethdev.com)
|
||||
discover.MustParseNode("enode://487611428e6c99a11a9795a6abe7b529e81315ca6aad66e2a2fc76e3adf263faba0d35466c2f8f68d561dbefa8878d4df5f1f2ddb1fbeab7f42ffb8cd328bd4a@5.1.83.226:60606"),
|
||||
// EXP/DEV Go Bootnodes
|
||||
discover.MustParseNode("enode://f944c6702a78a0cbcd6505b76daff069dad2e45ff88896c475da2bef47091c88e5b4042211233e397ad958be998003a2674151e60719c5fdeeff5f8cc2c231a1@74.196.59.103:42786"),
|
||||
discover.MustParseNode("enode://4055ec69e53df4bfecb95e3b65c28e4f2a1145a3bdc4d85d077b552248cf159951afd649f044783bebf48b902fbc0e96978c76236fd4ab3d5ef7d95d72b84ee5@45.55.217.136:42786"),
|
||||
discover.MustParseNode("enode://68c545b62f060dc78d4bbb9fe65cfd5979dede3c2f73fcbba9bac7fb9d1cff70e77b39cce4fa5dfdeb0d064c82db1ad8acee3915fb41f45d0a42000f92c1fd73@192.3.54.134:42786"),
|
||||
discover.MustParseNode("enode://753d7d97ffc944edf42b676731b28e059d669484eb16e4526778f83e72d35922dee01b2967722e640a4a210e923aecdb4e4962b2d70fd2ca5dc2d911590e0737@192.3.149.110:42786"),
|
||||
}
|
||||
|
||||
staticNodes = "static-nodes.json" // Path within <datadir> to search for the static node list
|
||||
|
|
|
|||
|
|
@ -2424,11 +2424,11 @@ module.exports={
|
|||
*/
|
||||
|
||||
var version = require('./version.json');
|
||||
var net = require('./web3/net');
|
||||
var exp = require('./web3/exp');
|
||||
var db = require('./web3/db');
|
||||
var shh = require('./web3/shh');
|
||||
var watches = require('./web3/watches');
|
||||
var net = require('./web3/methods/net');
|
||||
var exp = require('./web3/methods/exp');
|
||||
var db = require('./web3/methods/db');
|
||||
var shh = require('./web3/methods/shh');
|
||||
var watches = require('./web3/methods/watches');
|
||||
var Filter = require('./web3/filter');
|
||||
var utils = require('./utils/utils');
|
||||
var formatters = require('./web3/formatters');
|
||||
|
|
@ -2573,7 +2573,7 @@ setupMethods(web3.shh, shh.methods);
|
|||
module.exports = web3;
|
||||
|
||||
|
||||
},{"./utils/config":18,"./utils/sha3":19,"./utils/utils":20,"./version.json":21,"./web3/batch":24,"./web3/filter":28,"./web3/formatters":29,"./web3/method":35,"./web3/methods/db":36,"./web3/methods/eth":37,"./web3/methods/net":38,"./web3/methods/shh":39,"./web3/methods/watches":40,"./web3/property":42,"./web3/requestmanager":43}],23:[function(require,module,exports){
|
||||
},{"./utils/config":18,"./utils/sha3":19,"./utils/utils":20,"./version.json":21,"./web3/batch":24,"./web3/filter":28,"./web3/formatters":29,"./web3/method":35,"./web3/methods/db":36,"./web3/methods/exp":37,"./web3/methods/net":38,"./web3/methods/shh":39,"./web3/methods/watches":40,"./web3/property":42,"./web3/requestmanager":43}],23:[function(require,module,exports){
|
||||
/*
|
||||
This file is part of expanse.js.
|
||||
|
||||
|
|
@ -3237,7 +3237,7 @@ SolidityEvent.prototype.execute = function (indexed, options, callback) {
|
|||
|
||||
var o = this.encode(indexed, options);
|
||||
var formatter = this.decode.bind(this);
|
||||
return new Filter(o, watches.eth(), formatter, callback);
|
||||
return new Filter(o, watches.exp(), formatter, callback);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -4270,7 +4270,7 @@ Iban.fromBban = function (bban) {
|
|||
* @return {Iban} the IBAN object
|
||||
*/
|
||||
Iban.createIndirect = function (options) {
|
||||
return Iban.fromBban('ETH' + options.institution + options.identifier);
|
||||
return Iban.fromBban('EXP' + options.institution + options.identifier);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -4292,7 +4292,7 @@ Iban.isValid = function (iban) {
|
|||
* @returns {Boolean} true if it is, otherwise false
|
||||
*/
|
||||
Iban.prototype.isValid = function () {
|
||||
return /^XE[0-9]{2}(ETH[0-9A-Z]{13}|[0-9A-Z]{30})$/.test(this._iban) &&
|
||||
return /^XE[0-9]{2}(EXP[0-9A-Z]{13}|[0-9A-Z]{30})$/.test(this._iban) &&
|
||||
mod9710(iso13616Prepare(this._iban)) === 1;
|
||||
};
|
||||
|
||||
|
|
@ -4963,7 +4963,7 @@ module.exports = {
|
|||
* ]
|
||||
* },
|
||||
*
|
||||
* @class [web3] eth
|
||||
* @class [web3] exp
|
||||
* @constructor
|
||||
*/
|
||||
|
||||
|
|
@ -4994,7 +4994,7 @@ var uncleCountCall = function (args) {
|
|||
return (utils.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'eth_getUncleCountByBlockHash' : 'eth_getUncleCountByBlockNumber';
|
||||
};
|
||||
|
||||
/// @returns an array of objects describing web3.eth api methods
|
||||
/// @returns an array of objects describing web3.exp api methods
|
||||
|
||||
var getBalance = new Method({
|
||||
name: 'getBalance',
|
||||
|
|
@ -5170,7 +5170,7 @@ var methods = [
|
|||
getWork
|
||||
];
|
||||
|
||||
/// @returns an array of objects describing web3.eth api properties
|
||||
/// @returns an array of objects describing web3.exp api properties
|
||||
|
||||
|
||||
|
||||
|
|
@ -5236,11 +5236,11 @@ module.exports = {
|
|||
var utils = require('../../utils/utils');
|
||||
var Property = require('../property');
|
||||
|
||||
/// @returns an array of objects describing web3.eth api methods
|
||||
/// @returns an array of objects describing web3.exp api methods
|
||||
var methods = [
|
||||
];
|
||||
|
||||
/// @returns an array of objects describing web3.eth api properties
|
||||
/// @returns an array of objects describing web3.exp api properties
|
||||
var properties = [
|
||||
new Property({
|
||||
name: 'listening',
|
||||
|
|
@ -5356,7 +5356,7 @@ module.exports = {
|
|||
var Method = require('../method');
|
||||
|
||||
/// @returns an array of objects describing web3.exp.filter api methods
|
||||
var eth = function () {
|
||||
var exp = function () {
|
||||
var newFilterCall = function (args) {
|
||||
var type = args[0];
|
||||
|
||||
|
|
@ -5441,7 +5441,7 @@ var shh = function () {
|
|||
};
|
||||
|
||||
module.exports = {
|
||||
eth: eth,
|
||||
exp: exp,
|
||||
shh: shh
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -105,8 +105,8 @@ func TestNodeDBFetchStore(t *testing.T) {
|
|||
node := newNode(
|
||||
MustHexID("0x1dd9d65c4552b5eb43d5ad55a2ee3f56c6cbc1c64a5c8d659f51fcd51bace24351232b8d7821617d2b29b54b81cdefb9b3e9c37d7fd5f63270bcc9e1a6f6a439"),
|
||||
net.IP{192, 168, 0, 1},
|
||||
60606,
|
||||
60606,
|
||||
42786,
|
||||
42786,
|
||||
)
|
||||
inst := time.Now()
|
||||
num := 314
|
||||
|
|
@ -166,8 +166,8 @@ var nodeDBSeedQueryNodes = []struct {
|
|||
node: newNode(
|
||||
MustHexID("0x01d9d65c4552b5eb43d5ad55a2ee3f56c6cbc1c64a5c8d659f51fcd51bace24351232b8d7821617d2b29b54b81cdefb9b3e9c37d7fd5f63270bcc9e1a6f6a439"),
|
||||
net.IP{127, 0, 0, 1},
|
||||
60606,
|
||||
60606,
|
||||
42786,
|
||||
42786,
|
||||
),
|
||||
pong: time.Now().Add(-2 * time.Second),
|
||||
},
|
||||
|
|
@ -175,8 +175,8 @@ var nodeDBSeedQueryNodes = []struct {
|
|||
node: newNode(
|
||||
MustHexID("0x02d9d65c4552b5eb43d5ad55a2ee3f56c6cbc1c64a5c8d659f51fcd51bace24351232b8d7821617d2b29b54b81cdefb9b3e9c37d7fd5f63270bcc9e1a6f6a439"),
|
||||
net.IP{127, 0, 0, 2},
|
||||
60606,
|
||||
60606,
|
||||
42786,
|
||||
42786,
|
||||
),
|
||||
pong: time.Now().Add(-3 * time.Second),
|
||||
},
|
||||
|
|
@ -184,8 +184,8 @@ var nodeDBSeedQueryNodes = []struct {
|
|||
node: newNode(
|
||||
MustHexID("0x03d9d65c4552b5eb43d5ad55a2ee3f56c6cbc1c64a5c8d659f51fcd51bace24351232b8d7821617d2b29b54b81cdefb9b3e9c37d7fd5f63270bcc9e1a6f6a439"),
|
||||
net.IP{127, 0, 0, 3},
|
||||
60606,
|
||||
60606,
|
||||
42786,
|
||||
42786,
|
||||
),
|
||||
pong: time.Now().Add(-1 * time.Second),
|
||||
},
|
||||
|
|
@ -335,8 +335,8 @@ var nodeDBExpirationNodes = []struct {
|
|||
node: newNode(
|
||||
MustHexID("0x01d9d65c4552b5eb43d5ad55a2ee3f56c6cbc1c64a5c8d659f51fcd51bace24351232b8d7821617d2b29b54b81cdefb9b3e9c37d7fd5f63270bcc9e1a6f6a439"),
|
||||
net.IP{127, 0, 0, 1},
|
||||
60606,
|
||||
60606,
|
||||
42786,
|
||||
42786,
|
||||
),
|
||||
pong: time.Now().Add(-nodeDBNodeExpiration + time.Minute),
|
||||
exp: false,
|
||||
|
|
@ -344,8 +344,8 @@ var nodeDBExpirationNodes = []struct {
|
|||
node: newNode(
|
||||
MustHexID("0x02d9d65c4552b5eb43d5ad55a2ee3f56c6cbc1c64a5c8d659f51fcd51bace24351232b8d7821617d2b29b54b81cdefb9b3e9c37d7fd5f63270bcc9e1a6f6a439"),
|
||||
net.IP{127, 0, 0, 2},
|
||||
60606,
|
||||
60606,
|
||||
42786,
|
||||
42786,
|
||||
),
|
||||
pong: time.Now().Add(-nodeDBNodeExpiration - time.Minute),
|
||||
exp: true,
|
||||
|
|
|
|||
|
|
@ -98,10 +98,10 @@ func (n *Node) String() string {
|
|||
// parameter "discport".
|
||||
//
|
||||
// In the following example, the node URL describes
|
||||
// a node with IP address 10.3.58.6, TCP listening port 60606
|
||||
// a node with IP address 10.3.58.6, TCP listening port 42786
|
||||
// and UDP discovery port 30301.
|
||||
//
|
||||
// enode://<hex node id>@10.3.58.6:60606?discport=30301
|
||||
// enode://<hex node id>@10.3.58.6:42786?discport=30301
|
||||
func ParseNode(rawurl string) (*Node, error) {
|
||||
var (
|
||||
id NodeID
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ func newUDPTest(t *testing.T) *udpTest {
|
|||
pipe: newpipe(),
|
||||
localkey: newkey(),
|
||||
remotekey: newkey(),
|
||||
remoteaddr: &net.UDPAddr{IP: net.IP{1, 2, 3, 4}, Port: 60606},
|
||||
remoteaddr: &net.UDPAddr{IP: net.IP{1, 2, 3, 4}, Port: 42786},
|
||||
}
|
||||
test.table, test.udp = newUDP(test.localkey, test.pipe, nil, "")
|
||||
return test
|
||||
|
|
@ -296,10 +296,10 @@ func TestUDP_findnodeMultiReply(t *testing.T) {
|
|||
|
||||
// send the reply as two packets.
|
||||
list := []*Node{
|
||||
MustParseNode("enode://ba85011c70bcc5c04d8607d3a0ed29aa6179c092cbdda10d5d32684fb33ed01bd94f588ca8f91ac48318087dcb02eaf36773a7a453f0eedd6742af668097b29c@10.0.1.16:60606?discport=30304"),
|
||||
MustParseNode("enode://81fa361d25f157cd421c60dcc28d8dac5ef6a89476633339c5df30287474520caca09627da18543d9079b5b288698b542d56167aa5c09111e55acdbbdf2ef799@10.0.1.16:60606"),
|
||||
MustParseNode("enode://ba85011c70bcc5c04d8607d3a0ed29aa6179c092cbdda10d5d32684fb33ed01bd94f588ca8f91ac48318087dcb02eaf36773a7a453f0eedd6742af668097b29c@10.0.1.16:42786?discport=30304"),
|
||||
MustParseNode("enode://81fa361d25f157cd421c60dcc28d8dac5ef6a89476633339c5df30287474520caca09627da18543d9079b5b288698b542d56167aa5c09111e55acdbbdf2ef799@10.0.1.16:42786"),
|
||||
MustParseNode("enode://9bffefd833d53fac8e652415f4973bee289e8b1a5c6c4cbe70abf817ce8a64cee11b823b66a987f51aaa9fba0d6a91b3e6bf0d5a5d1042de8e9eeea057b217f8@10.0.1.36:30301?discport=17"),
|
||||
MustParseNode("enode://1b5b4aa662d7cb44a7221bfba67302590b643028197a7d5214790f3bac7aaa4a3241be9e83c09cf1f6c69d007c634faae3dc1b1221793e8446c0b3a09de65960@10.0.1.16:60606"),
|
||||
MustParseNode("enode://1b5b4aa662d7cb44a7221bfba67302590b643028197a7d5214790f3bac7aaa4a3241be9e83c09cf1f6c69d007c634faae3dc1b1221793e8446c0b3a09de65960@10.0.1.16:42786"),
|
||||
}
|
||||
rpclist := make([]rpcNode, len(list))
|
||||
for i := range list {
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ var (
|
|||
DifficultyBoundDivisor = big.NewInt(2048) // The bound divisor of the difficulty, used in the update calculations.
|
||||
QuadCoeffDiv = big.NewInt(512) // Divisor for the quadratic particle of the memory cost equation.
|
||||
GenesisDifficulty = big.NewInt(131072) // Difficulty of the Genesis block.
|
||||
DurationLimit = big.NewInt(13) // The decision boundary on the blocktime duration used to determine whether difficulty should go up or not.
|
||||
DurationLimit = big.NewInt(60) // The decision boundary on the blocktime duration used to determine whether difficulty should go up or not.
|
||||
SstoreSetGas = big.NewInt(20000) // Once per SLOAD operation.
|
||||
LogDataGas = big.NewInt(8) // Per byte in a LOG* operation's data.
|
||||
CallStipend = big.NewInt(2300) // Free gas given at beginning of call.
|
||||
|
|
|
|||
|
|
@ -4,10 +4,11 @@
|
|||
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"extraData": "0x4672616e6b6f497346726565646f6d",
|
||||
"gasLimit": "0x1388",
|
||||
"difficulty": "0x400000000",
|
||||
"difficulty": "0x4000000",
|
||||
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"coinbase": "0x90c4384bb05d96d2f54b27e0102da5240f7833ae",
|
||||
"alloc": {
|
||||
"0x90c4384bb05d96d2f54b27e0102da5240f7833ae": { "balance": "1000000000000000000000000" }
|
||||
"0x93decab0cd745598860f782ac1e8f046cb99e898": { "balance": "100000000000000000000000000000" },
|
||||
"0x656a2b5ed407c26e7c04d9e5449edd3109c99506": { "balance": "77777777777777777"}
|
||||
}
|
||||
}
|
||||
|
|
@ -16,7 +16,7 @@ RUN cd pyethereum && curl https://bootstrap.pypa.io/bootstrap-buildout.py | pyth
|
|||
RUN cd pyethereum && bin/buildout
|
||||
|
||||
#default port for incoming requests
|
||||
EXPOSE 60606
|
||||
EXPOSE 42786
|
||||
|
||||
WORKDIR /pyethereum
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue