| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
This commit replaces the deep-copy based state revert mechanism with a
linear complexity journal. This commit also hides several internal
StateDB methods to limit the number of ways in which calling code can
use the journal incorrectly.
As usual consultation and bug fixes to the initial implementation were
provided by @karalabe, @obscuren and @Arachnid. Thank you!
(cherry picked from commit 1f1ea18b5414bea22332bb4fce53cc95b5c6a07d)
|
|
|
|
|
|
| |
test DAO
(cherry picked from commit 3291235711082759cd7b70253c02150a80d57011)
|
|
|
|
| |
(cherry picked from commit 0f9539e1e3e77bb181d67591cfbb77f6a17e5537)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
encoding
When converting a negative number e.g., -2, the resulting ABI encoding
should look as follows:
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe.
However, since the check of the type is for an uint instead of an
int, it results in the following ABI encoding:
0101010101010101010101010101010101010101010101010101010101010102. The
Ethereum ABI
(https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI) says,
that signed integers are stored in two's complement which should be
of the form ffffff.... and not 01010101..... for e.g. -1. Thus, I
removed the type check in numbers.go as well as the function S256
as I don't think they are correct. Or maybe I'm missing something?
(cherry picked from commit 89c6c5bb85ff24c152218f245fa366e733c951a7)
|
|
|
|
| |
(cherry picked from commit 251b3c6406aee5876c87016bd088c8cefe7c08f6)
|
|
|
|
|
|
| |
not estimate and call
(cherry picked from commit 1580ec180414bce1e37acc614bc2445f778efb75)
|
|
|
|
| |
(cherry picked from commit cc21706c5007e8f400df536591948aee69e82d2f)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously it was assumed that wheneven type `[]interface{}` was given
that the interface was empty. The abigen rightfully assumed that
interface slices which already have pre-allocated variable sets to be
assigned.
This PR fixes that by checking that the given `[]interface{}` is larger
than zero and assigns each value using the generic `set` function (this
function has also been moved to abi/reflect.go) and checks whether the
assignment was possible.
The generic assignment function `set` now also deals with pointers
(useful for interface slice mentioned above) by dereferencing the
pointer until it finds a setable type.
(cherry picked from commit 91a7a4a7867718ccb6c9620120a1be5680ad0abd)
|
| |
|
|\
| |
| | |
accounts/abi: refactored ABI package
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Refactored the abi package parsing and type handling. Relying mostly on
package reflect as opposed to most of our own type reflection. Our own
type reflection is still used however for cases such as Bytes and
FixedBytes (abi: bytes•).
This also inclused several fixes for slice handling of arbitrary and
fixed size for all supported types.
This also further removes implicit type casting such as assigning,
for example `[2]T{} = []T{1}` will fail, however `[2]T{} == []T{1, 2}`
(notice assigning *slice* to fixed size *array*). Assigning arrays to
slices will always succeed if they are of the same element type.
Incidentally also fixes #2379
|
|/ |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The account management API was originally implemented as a thin layer
around crypto.KeyStore, on the grounds that several kinds of key stores
would be implemented later on. It turns out that this won't happen so
KeyStore is a superflous abstraction.
In this commit crypto.KeyStore and everything related to it moves to
package accounts and is unexported.
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| | |
accounts/abi/bind: surface raw wrappers to access low level ops
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
The chain maker and the simulated backend now run with a homestead phase
beginning at block 0 (i.e. there's no frontier).
This commit also fixes up #2388
|
|/
|
|
|
|
|
|
|
| |
Added chain configuration options and write out during genesis database
insertion. If no "config" was found, nothing is written to the database.
Configurations are written on a per genesis base. This means
that any chain (which is identified by it's genesis hash) can have their
own chain settings.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| | |
accounts/abi: Fixed bytes input accept []byte and variable input support
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fixed up `[]byte` slice support such that `function print(bytes input)`
accepts `[]byte` as input and treats it as 1 element rather than a slice
of multiple elements.
Added support for variable length input parameters like `bytes` and
`strings`.
|
|/ |
|
|
|
|
| |
As we aren't really using the standarized SHA-3
|
|
|
|
|
| |
Added support for fixed size and arbitrary length byte arrays to be
marshallable in fixed size (typed) byte slices.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Removed old unmarshalling of return types: `abi.Call(...).([]byte)`.
This is now replaced by a new syntax:
```
var a []byte
err := abi.Call(&a, ...)
```
It also addresses a few issues with Bytes and Strings and can also
handle both fixed and arbitrary sized byte slices, including strings.
|
|
|
|
|
|
| |
Implementation of basic event parsing and its input types. This
separates methods and events and fixes an issue with go type parsing and
validation.
|
|
|
|
| |
Added calling mechanism and return value parsing
|
|
|
|
|
|
|
| |
Changed field `input` to new `inputs`. Addad Hash and Address as input
types.
Added bytes[N] and N validation
|
|
|
|
| |
I forgot to update one instance of "go-ethereum" in commit 3f047be5a.
|
|
|
|
|
| |
All code outside of cmd/ is licensed as LGPL. The headers
now reflect this by calling the whole work "the go-ethereum library".
|
| |
|
| |
|
| |
|
|
|