cmd/geth, core, eth: Version 1.0.0

Genesis release. Closes #1402

Conflicts:
	cmd/geth/main.go
pull/1521/head
Jeffrey Wilcke 9 years ago
parent 5001f778aa
commit 036e6301af
  1. 3
      cmd/geth/main.go
  2. 3
      core/chain_makers_test.go
  3. 8
      core/chain_manager.go
  4. 1
      eth/handler.go
  5. 2
      eth/protocol.go
  6. 4
      eth/protocol_test.go
  7. 92
      params/protocol_params.go

@ -49,7 +49,7 @@ import (
const ( const (
ClientIdentifier = "Geth" ClientIdentifier = "Geth"
Version = "0.9.39" Version = "1.0.0"
) )
var ( var (
@ -276,7 +276,6 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso
utils.IdentityFlag, utils.IdentityFlag,
utils.UnlockedAccountFlag, utils.UnlockedAccountFlag,
utils.PasswordFileFlag, utils.PasswordFileFlag,
utils.GenesisNonceFlag,
utils.GenesisFileFlag, utils.GenesisFileFlag,
utils.BootnodesFlag, utils.BootnodesFlag,
utils.DataDirFlag, utils.DataDirFlag,

@ -28,6 +28,9 @@ import (
) )
func ExampleGenerateChain() { func ExampleGenerateChain() {
params.MinGasLimit = big.NewInt(125000) // Minimum the gas limit may ever be.
params.GenesisGasLimit = big.NewInt(3141592) // Gas limit of the Genesis block.
var ( var (
key1, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") key1, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
key2, _ = crypto.HexToECDSA("8a1f9a8f95be41cd7ccb6168179afb4504aefe388d1e14474d32c45c72ce7b7a") key2, _ = crypto.HexToECDSA("8a1f9a8f95be41cd7ccb6168179afb4504aefe388d1e14474d32c45c72ce7b7a")

@ -98,13 +98,7 @@ func NewChainManager(blockDb, stateDb, extraDb common.Database, pow pow.PoW, mux
bc.genesisBlock = bc.GetBlockByNumber(0) bc.genesisBlock = bc.GetBlockByNumber(0)
if bc.genesisBlock == nil { if bc.genesisBlock == nil {
// XXX Uncomment me before Frontier return nil, ErrNoGenesis
//return nil, ErrNoGenesis
genesis, err := WriteTestNetGenesisBlock(bc.stateDb, bc.blockDb, 42)
if err != nil {
glog.Fatalln("genisis err", err)
}
bc.genesisBlock = genesis
} }
if err := bc.setLastState(); err != nil { if err := bc.setLastState(); err != nil {

@ -95,6 +95,7 @@ func NewProtocolManager(networkId int, mux *event.TypeMux, txpool txPool, pow po
newPeerCh: make(chan *peer, 1), newPeerCh: make(chan *peer, 1),
txsyncCh: make(chan *txsync), txsyncCh: make(chan *txsync),
quitSync: make(chan struct{}), quitSync: make(chan struct{}),
netId: networkId,
} }
// Initiate a sub-protocol for every implemented version we can handle // Initiate a sub-protocol for every implemented version we can handle
manager.SubProtocols = make([]p2p.Protocol, len(ProtocolVersions)) manager.SubProtocols = make([]p2p.Protocol, len(ProtocolVersions))

@ -30,7 +30,7 @@ var ProtocolVersions = []uint{61, 60}
var ProtocolLengths = []uint64{9, 8} var ProtocolLengths = []uint64{9, 8}
const ( const (
NetworkId = 0 NetworkId = 1
ProtocolMaxMsgSize = 10 * 1024 * 1024 // Maximum cap on the size of a protocol message ProtocolMaxMsgSize = 10 * 1024 * 1024 // Maximum cap on the size of a protocol message
) )

@ -60,7 +60,7 @@ func TestStatusMsgErrors(t *testing.T) {
}, },
{ {
code: StatusMsg, data: statusData{uint32(ProtocolVersions[0]), 999, td, currentBlock, genesis}, code: StatusMsg, data: statusData{uint32(ProtocolVersions[0]), 999, td, currentBlock, genesis},
wantError: errResp(ErrNetworkIdMismatch, "999 (!= 0)"), wantError: errResp(ErrNetworkIdMismatch, "999 (!= 1)"),
}, },
{ {
code: StatusMsg, data: statusData{uint32(ProtocolVersions[0]), NetworkId, td, currentBlock, common.Hash{3}}, code: StatusMsg, data: statusData{uint32(ProtocolVersions[0]), NetworkId, td, currentBlock, common.Hash{3}},
@ -184,7 +184,7 @@ func newProtocolManagerForTesting(txAdded chan<- []*types.Transaction) *Protocol
em = new(event.TypeMux) em = new(event.TypeMux)
chain, _ = core.NewChainManager(db, db, db, core.FakePow{}, em) chain, _ = core.NewChainManager(db, db, db, core.FakePow{}, em)
txpool = &fakeTxPool{added: txAdded} txpool = &fakeTxPool{added: txAdded}
pm = NewProtocolManager(0, em, txpool, core.FakePow{}, chain) pm = NewProtocolManager(NetworkId, em, txpool, core.FakePow{}, chain)
) )
pm.Start() pm.Start()
return pm return pm

@ -22,49 +22,51 @@ package params
import "math/big" import "math/big"
var ( var (
MaximumExtraDataSize = big.NewInt(1024) // Maximum size extra data may be after Genesis. MaximumExtraDataSize = big.NewInt(1024) // Maximum size extra data may be after Genesis.
ExpByteGas = big.NewInt(10) // Times ceil(log256(exponent)) for the EXP instruction. ExpByteGas = big.NewInt(10) // Times ceil(log256(exponent)) for the EXP instruction.
SloadGas = big.NewInt(50) // Multiplied by the number of 32-byte words that are copied (round up) for any *COPY operation and added. SloadGas = big.NewInt(50) // Multiplied by the number of 32-byte words that are copied (round up) for any *COPY operation and added.
CallValueTransferGas = big.NewInt(9000) // Paid for CALL when the value transfor is non-zero. CallValueTransferGas = big.NewInt(9000) // Paid for CALL when the value transfor is non-zero.
CallNewAccountGas = big.NewInt(25000) // Paid for CALL when the destination address didn't exist prior. CallNewAccountGas = big.NewInt(25000) // Paid for CALL when the destination address didn't exist prior.
TxGas = big.NewInt(21000) // Per transaction. NOTE: Not payable on data of calls between transactions. TxGas = big.NewInt(21000) // Per transaction. NOTE: Not payable on data of calls between transactions.
TxDataZeroGas = big.NewInt(4) // Per byte of data attached to a transaction that equals zero. NOTE: Not payable on data of calls between transactions. TxDataZeroGas = big.NewInt(4) // Per byte of data attached to a transaction that equals zero. NOTE: Not payable on data of calls between transactions.
GenesisGasLimit = big.NewInt(3141592) // Gas limit of the Genesis block. DifficultyBoundDivisor = big.NewInt(2048) // The bound divisor of the difficulty, used in the update calculations.
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.
QuadCoeffDiv = big.NewInt(512) // Divisor for the quadratic particle of the memory cost equation. GenesisDifficulty = big.NewInt(131072) // Difficulty of the Genesis block.
GenesisDifficulty = big.NewInt(131072) // Difficulty of the Genesis block. DurationLimit = big.NewInt(8) // The decision boundary on the blocktime duration used to determine whether difficulty should go up or not.
DurationLimit = big.NewInt(8) // 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.
SstoreSetGas = big.NewInt(20000) // Once per SLOAD operation. LogDataGas = big.NewInt(8) // Per byte in a LOG* operation's data.
LogDataGas = big.NewInt(8) // Per byte in a LOG* operation's data. CallStipend = big.NewInt(2300) // Free gas given at beginning of call.
CallStipend = big.NewInt(2300) // Free gas given at beginning of call. EcrecoverGas = big.NewInt(3000) //
EcrecoverGas = big.NewInt(3000) // Sha256WordGas = big.NewInt(12) //
Sha256WordGas = big.NewInt(12) //
MinGasLimit = big.NewInt(125000) // Minimum the gas limit may ever be. MinGasLimit = big.NewInt(5000) // Minimum the gas limit may ever be.
Sha3Gas = big.NewInt(30) // Once per SHA3 operation. GenesisGasLimit = big.NewInt(5000) // Gas limit of the Genesis block.
Sha256Gas = big.NewInt(60) //
IdentityWordGas = big.NewInt(3) // Sha3Gas = big.NewInt(30) // Once per SHA3 operation.
Sha3WordGas = big.NewInt(6) // Once per word of the SHA3 operation's data. Sha256Gas = big.NewInt(60) //
SstoreResetGas = big.NewInt(5000) // Once per SSTORE operation if the zeroness changes from zero. IdentityWordGas = big.NewInt(3) //
SstoreClearGas = big.NewInt(5000) // Once per SSTORE operation if the zeroness doesn't change. Sha3WordGas = big.NewInt(6) // Once per word of the SHA3 operation's data.
SstoreRefundGas = big.NewInt(15000) // Once per SSTORE operation if the zeroness changes to zero. SstoreResetGas = big.NewInt(5000) // Once per SSTORE operation if the zeroness changes from zero.
JumpdestGas = big.NewInt(1) // Refunded gas, once per SSTORE operation if the zeroness changes to zero. SstoreClearGas = big.NewInt(5000) // Once per SSTORE operation if the zeroness doesn't change.
IdentityGas = big.NewInt(15) // SstoreRefundGas = big.NewInt(15000) // Once per SSTORE operation if the zeroness changes to zero.
GasLimitBoundDivisor = big.NewInt(1024) // The bound divisor of the gas limit, used in update calculations. JumpdestGas = big.NewInt(1) // Refunded gas, once per SSTORE operation if the zeroness changes to zero.
EpochDuration = big.NewInt(30000) // Duration between proof-of-work epochs. IdentityGas = big.NewInt(15) //
CallGas = big.NewInt(40) // Once per CALL operation & message call transaction. GasLimitBoundDivisor = big.NewInt(1024) // The bound divisor of the gas limit, used in update calculations.
CreateDataGas = big.NewInt(200) // EpochDuration = big.NewInt(30000) // Duration between proof-of-work epochs.
Ripemd160Gas = big.NewInt(600) // CallGas = big.NewInt(40) // Once per CALL operation & message call transaction.
Ripemd160WordGas = big.NewInt(120) // CreateDataGas = big.NewInt(200) //
MinimumDifficulty = big.NewInt(131072) // The minimum that the difficulty may ever be. Ripemd160Gas = big.NewInt(600) //
CallCreateDepth = big.NewInt(1024) // Maximum depth of call/create stack. Ripemd160WordGas = big.NewInt(120) //
ExpGas = big.NewInt(10) // Once per EXP instuction. MinimumDifficulty = big.NewInt(131072) // The minimum that the difficulty may ever be.
LogGas = big.NewInt(375) // Per LOG* operation. CallCreateDepth = big.NewInt(1024) // Maximum depth of call/create stack.
CopyGas = big.NewInt(3) // ExpGas = big.NewInt(10) // Once per EXP instuction.
StackLimit = big.NewInt(1024) // Maximum size of VM stack allowed. LogGas = big.NewInt(375) // Per LOG* operation.
TierStepGas = big.NewInt(0) // Once per operation, for a selection of them. CopyGas = big.NewInt(3) //
LogTopicGas = big.NewInt(375) // Multiplied by the * of the LOG*, per LOG transaction. e.g. LOG0 incurs 0 * c_txLogTopicGas, LOG4 incurs 4 * c_txLogTopicGas. StackLimit = big.NewInt(1024) // Maximum size of VM stack allowed.
CreateGas = big.NewInt(32000) // Once per CREATE operation & contract-creation transaction. TierStepGas = big.NewInt(0) // Once per operation, for a selection of them.
SuicideRefundGas = big.NewInt(24000) // Refunded following a suicide operation. LogTopicGas = big.NewInt(375) // Multiplied by the * of the LOG*, per LOG transaction. e.g. LOG0 incurs 0 * c_txLogTopicGas, LOG4 incurs 4 * c_txLogTopicGas.
MemoryGas = big.NewInt(3) // Times the address of the (highest referenced byte in memory + 1). NOTE: referencing happens on read, write and in instructions such as RETURN and CALL. CreateGas = big.NewInt(32000) // Once per CREATE operation & contract-creation transaction.
TxDataNonZeroGas = big.NewInt(68) // Per byte of data attached to a transaction that is not equal to zero. NOTE: Not payable on data of calls between transactions. SuicideRefundGas = big.NewInt(24000) // Refunded following a suicide operation.
MemoryGas = big.NewInt(3) // Times the address of the (highest referenced byte in memory + 1). NOTE: referencing happens on read, write and in instructions such as RETURN and CALL.
TxDataNonZeroGas = big.NewInt(68) // Per byte of data attached to a transaction that is not equal to zero. NOTE: Not payable on data of calls between transactions.
) )

Loading…
Cancel
Save