From a731f59bd39abd2a75a2b5c0e92aa016845f5ef7 Mon Sep 17 00:00:00 2001 From: Coffepots Date: Fri, 6 Apr 2018 16:22:32 +0100 Subject: [PATCH 1/7] Moved EthTime to constants, update more timestamps to EthTime --- src/chain.nim | 2 +- src/constants.nim | 3 ++- src/utils/header.nim | 1 - src/vm_state.nim | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/chain.nim b/src/chain.nim index 1056aad6b..7826ce781 100644 --- a/src/chain.nim +++ b/src/chain.nim @@ -31,7 +31,7 @@ type nonce*: string mixHash*: string extraData*: string - timestamp*: int + timestamp*: EthTime stateRoot*: string FundedAddress* = ref object diff --git a/src/constants.nim b/src/constants.nim index 73c2892b2..73a81f723 100644 --- a/src/constants.nim +++ b/src/constants.nim @@ -1,11 +1,12 @@ import - ttmath, math, strutils, tables, utils/padding, rlp + ttmath, math, strutils, tables, utils/padding, rlp, times # rlpFields UInt256, table type TypeHint* {.pure.} = enum UInt256, Bytes, Any + EthTime* = Time #Bytes* = seq[byte] diff --git a/src/utils/header.nim b/src/utils/header.nim index bd9f56425..7e68f01ad 100644 --- a/src/utils/header.nim +++ b/src/utils/header.nim @@ -1,7 +1,6 @@ import ../constants, ttmath, strformat, times, ../validation type - EthTime = Time Header* = ref object timestamp*: EthTime difficulty*: UInt256 diff --git a/src/vm_state.nim b/src/vm_state.nim index 0a6d4f137..8c7521279 100644 --- a/src/vm_state.nim +++ b/src/vm_state.nim @@ -44,7 +44,7 @@ method blockhash*(vmState: BaseVMState): string = method coinbase*(vmState: BaseVMState): string = vmState.blockHeader.coinbase -method timestamp*(vmState: BaseVMState): int = +method timestamp*(vmState: BaseVMState): EthTime = vmState.blockHeader.timestamp method blockNumber*(vmState: BaseVMState): UInt256 = From fdcfe5ae2f0b9fd66c00cda3eea2719003e5a6a6 Mon Sep 17 00:00:00 2001 From: Coffepots Date: Fri, 6 Apr 2018 16:24:39 +0100 Subject: [PATCH 2/7] Revert "Moved EthTime to constants, update more timestamps to EthTime" This reverts commit a731f59bd39abd2a75a2b5c0e92aa016845f5ef7. --- src/chain.nim | 2 +- src/constants.nim | 3 +-- src/utils/header.nim | 1 + src/vm_state.nim | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/chain.nim b/src/chain.nim index 7826ce781..1056aad6b 100644 --- a/src/chain.nim +++ b/src/chain.nim @@ -31,7 +31,7 @@ type nonce*: string mixHash*: string extraData*: string - timestamp*: EthTime + timestamp*: int stateRoot*: string FundedAddress* = ref object diff --git a/src/constants.nim b/src/constants.nim index 73a81f723..73c2892b2 100644 --- a/src/constants.nim +++ b/src/constants.nim @@ -1,12 +1,11 @@ import - ttmath, math, strutils, tables, utils/padding, rlp, times + ttmath, math, strutils, tables, utils/padding, rlp # rlpFields UInt256, table type TypeHint* {.pure.} = enum UInt256, Bytes, Any - EthTime* = Time #Bytes* = seq[byte] diff --git a/src/utils/header.nim b/src/utils/header.nim index 7e68f01ad..bd9f56425 100644 --- a/src/utils/header.nim +++ b/src/utils/header.nim @@ -1,6 +1,7 @@ import ../constants, ttmath, strformat, times, ../validation type + EthTime = Time Header* = ref object timestamp*: EthTime difficulty*: UInt256 diff --git a/src/vm_state.nim b/src/vm_state.nim index 8c7521279..0a6d4f137 100644 --- a/src/vm_state.nim +++ b/src/vm_state.nim @@ -44,7 +44,7 @@ method blockhash*(vmState: BaseVMState): string = method coinbase*(vmState: BaseVMState): string = vmState.blockHeader.coinbase -method timestamp*(vmState: BaseVMState): EthTime = +method timestamp*(vmState: BaseVMState): int = vmState.blockHeader.timestamp method blockNumber*(vmState: BaseVMState): UInt256 = From ea94447d4853f4a16e12313513b2d5760cd5c671 Mon Sep 17 00:00:00 2001 From: Coffepots Date: Fri, 6 Apr 2018 17:01:41 +0100 Subject: [PATCH 3/7] Moved EthTime to constants, update more timestamps to EthTime --- src/chain.nim | 2 +- src/constants.nim | 4 +++- src/utils/header.nim | 1 - src/vm_state.nim | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/chain.nim b/src/chain.nim index 1056aad6b..7826ce781 100644 --- a/src/chain.nim +++ b/src/chain.nim @@ -31,7 +31,7 @@ type nonce*: string mixHash*: string extraData*: string - timestamp*: int + timestamp*: EthTime stateRoot*: string FundedAddress* = ref object diff --git a/src/constants.nim b/src/constants.nim index 73c2892b2..2c7a104e5 100644 --- a/src/constants.nim +++ b/src/constants.nim @@ -1,11 +1,13 @@ import - ttmath, math, strutils, tables, utils/padding, rlp + ttmath, math, strutils, tables, utils/padding, rlp, times # rlpFields UInt256, table type TypeHint* {.pure.} = enum UInt256, Bytes, Any + EthTime* = Time + #Bytes* = seq[byte] diff --git a/src/utils/header.nim b/src/utils/header.nim index bd9f56425..7e68f01ad 100644 --- a/src/utils/header.nim +++ b/src/utils/header.nim @@ -1,7 +1,6 @@ import ../constants, ttmath, strformat, times, ../validation type - EthTime = Time Header* = ref object timestamp*: EthTime difficulty*: UInt256 diff --git a/src/vm_state.nim b/src/vm_state.nim index 0a6d4f137..8c7521279 100644 --- a/src/vm_state.nim +++ b/src/vm_state.nim @@ -44,7 +44,7 @@ method blockhash*(vmState: BaseVMState): string = method coinbase*(vmState: BaseVMState): string = vmState.blockHeader.coinbase -method timestamp*(vmState: BaseVMState): int = +method timestamp*(vmState: BaseVMState): EthTime = vmState.blockHeader.timestamp method blockNumber*(vmState: BaseVMState): UInt256 = From 4e1755a0bf985f6672bb500ba3d24aa2da92429a Mon Sep 17 00:00:00 2001 From: Coffepots Date: Fri, 6 Apr 2018 18:56:57 +0100 Subject: [PATCH 4/7] Get test_opcode to run --- src/logic/block_ops.nim | 4 ++-- src/utils/keccak.nim | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/logic/block_ops.nim b/src/logic/block_ops.nim index 1292a1e88..5bb9f8fb1 100644 --- a/src/logic/block_ops.nim +++ b/src/logic/block_ops.nim @@ -1,5 +1,5 @@ import - ../constants, ../errors, ../computation, ../vm_state, ../types, .. / vm / [stack] + ../constants, ../errors, ../computation, ../vm_state, ../types, .. / vm / [stack], ttmath {.this: computation.} {.experimental.} @@ -16,7 +16,7 @@ proc coinbase*(computation) = stack.push(vmState.coinbase) proc timestamp*(computation) = - stack.push(vmState.timestamp.u256) + stack.push(vmState.timestamp.uint64.u256) # TODO: EthTime (from Time) is distinct proc number*(computation) = stack.push(vmState.blockNumber) diff --git a/src/utils/keccak.nim b/src/utils/keccak.nim index ec35b24c1..2d5abdeb0 100644 --- a/src/utils/keccak.nim +++ b/src/utils/keccak.nim @@ -1,10 +1,18 @@ import - keccak_tiny, strutils + nimcrypto, strutils +#[ template keccak*(value: string): string = $keccak_256(value) template keccak*(value: cstring): string = ($value).keccak +]# + +proc keccak*(value: string): string = + # TODO: Urgent - check this is doing the same thing as above + var k = sha3_256() + k.init + k.update(cast[ptr uint8](value[0].unsafeaddr), value.len.uint) + result = $finish(k) - \ No newline at end of file From 59b28cd1b2bb67a065bf065640e3c410aaa54ca2 Mon Sep 17 00:00:00 2001 From: Coffepots Date: Fri, 6 Apr 2018 18:59:32 +0100 Subject: [PATCH 5/7] More descriptive comment on timestamp --- src/logic/block_ops.nim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/logic/block_ops.nim b/src/logic/block_ops.nim index 5bb9f8fb1..a4caf0721 100644 --- a/src/logic/block_ops.nim +++ b/src/logic/block_ops.nim @@ -16,7 +16,9 @@ proc coinbase*(computation) = stack.push(vmState.coinbase) proc timestamp*(computation) = - stack.push(vmState.timestamp.uint64.u256) # TODO: EthTime (from Time) is distinct + # TODO: EthTime is an alias of Time, which is a distinct int64 so can't use u256(int64) + # This may have implications for different platforms. + stack.push(vmState.timestamp.uint64.u256) proc number*(computation) = stack.push(vmState.blockNumber) From c66afe18dd39072b52b329b45c55e14b3620721e Mon Sep 17 00:00:00 2001 From: Coffepots Date: Fri, 6 Apr 2018 19:29:47 +0100 Subject: [PATCH 6/7] Revert keccak change, get test_opcode to run --- src/logic/block_ops.nim | 3 ++- src/utils/keccak.nim | 12 +----------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/logic/block_ops.nim b/src/logic/block_ops.nim index a4caf0721..97d5ab376 100644 --- a/src/logic/block_ops.nim +++ b/src/logic/block_ops.nim @@ -1,5 +1,5 @@ import - ../constants, ../errors, ../computation, ../vm_state, ../types, .. / vm / [stack], ttmath + ../constants, ../errors, ../computation, ../vm_state, ../types, .. / vm / [stack] {.this: computation.} {.experimental.} @@ -19,6 +19,7 @@ proc timestamp*(computation) = # TODO: EthTime is an alias of Time, which is a distinct int64 so can't use u256(int64) # This may have implications for different platforms. stack.push(vmState.timestamp.uint64.u256) + stack.push(vmState.timestamp.u256) proc number*(computation) = stack.push(vmState.blockNumber) diff --git a/src/utils/keccak.nim b/src/utils/keccak.nim index 2d5abdeb0..6f79651c8 100644 --- a/src/utils/keccak.nim +++ b/src/utils/keccak.nim @@ -1,18 +1,8 @@ import - nimcrypto, strutils + keccak_tiny, strutils -#[ template keccak*(value: string): string = $keccak_256(value) template keccak*(value: cstring): string = ($value).keccak -]# - -proc keccak*(value: string): string = - # TODO: Urgent - check this is doing the same thing as above - var k = sha3_256() - k.init - k.update(cast[ptr uint8](value[0].unsafeaddr), value.len.uint) - result = $finish(k) - From 79e74f3da32297feb2d528006d98b976204210bb Mon Sep 17 00:00:00 2001 From: Coffepots Date: Fri, 6 Apr 2018 19:34:11 +0100 Subject: [PATCH 7/7] Remove double line and use ttmath for generating u256 --- src/logic/block_ops.nim | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/logic/block_ops.nim b/src/logic/block_ops.nim index 97d5ab376..a4caf0721 100644 --- a/src/logic/block_ops.nim +++ b/src/logic/block_ops.nim @@ -1,5 +1,5 @@ import - ../constants, ../errors, ../computation, ../vm_state, ../types, .. / vm / [stack] + ../constants, ../errors, ../computation, ../vm_state, ../types, .. / vm / [stack], ttmath {.this: computation.} {.experimental.} @@ -19,7 +19,6 @@ proc timestamp*(computation) = # TODO: EthTime is an alias of Time, which is a distinct int64 so can't use u256(int64) # This may have implications for different platforms. stack.push(vmState.timestamp.uint64.u256) - stack.push(vmState.timestamp.u256) proc number*(computation) = stack.push(vmState.blockNumber)