aboutsummaryrefslogtreecommitdiffstats
path: root/vm/address.go
diff options
context:
space:
mode:
Diffstat (limited to 'vm/address.go')
-rw-r--r--vm/address.go57
1 files changed, 31 insertions, 26 deletions
diff --git a/vm/address.go b/vm/address.go
index be4284421..1c9369ab7 100644
--- a/vm/address.go
+++ b/vm/address.go
@@ -20,32 +20,37 @@ func (self PrecompiledAccount) Call(in []byte) []byte {
return self.fn(in)
}
-var Precompiled = map[string]*PrecompiledAccount{
- // ECRECOVER
- string(ethutil.LeftPadBytes([]byte{1}, 20)): &PrecompiledAccount{func(l int) *big.Int {
- return GasEcrecover
- }, ecrecoverFunc},
-
- // SHA256
- string(ethutil.LeftPadBytes([]byte{2}, 20)): &PrecompiledAccount{func(l int) *big.Int {
- n := big.NewInt(int64(l+31)/32 + 1)
- n.Mul(n, GasSha256)
- return n
- }, sha256Func},
-
- // RIPEMD160
- string(ethutil.LeftPadBytes([]byte{3}, 20)): &PrecompiledAccount{func(l int) *big.Int {
- n := big.NewInt(int64(l+31)/32 + 1)
- n.Mul(n, GasRipemd)
- return n
- }, ripemd160Func},
-
- string(ethutil.LeftPadBytes([]byte{4}, 20)): &PrecompiledAccount{func(l int) *big.Int {
- n := big.NewInt(int64(l+31)/32 + 1)
- n.Mul(n, GasMemCpy)
-
- return n
- }, memCpy},
+var Precompiled = PrecompiledContracts()
+
+// XXX Could set directly. Testing requires resetting and setting of pre compiled contracts.
+func PrecompiledContracts() map[string]*PrecompiledAccount {
+ return map[string]*PrecompiledAccount{
+ // ECRECOVER
+ string(ethutil.LeftPadBytes([]byte{1}, 20)): &PrecompiledAccount{func(l int) *big.Int {
+ return GasEcrecover
+ }, ecrecoverFunc},
+
+ // SHA256
+ string(ethutil.LeftPadBytes([]byte{2}, 20)): &PrecompiledAccount{func(l int) *big.Int {
+ n := big.NewInt(int64(l+31)/32 + 1)
+ n.Mul(n, GasSha256)
+ return n
+ }, sha256Func},
+
+ // RIPEMD160
+ string(ethutil.LeftPadBytes([]byte{3}, 20)): &PrecompiledAccount{func(l int) *big.Int {
+ n := big.NewInt(int64(l+31)/32 + 1)
+ n.Mul(n, GasRipemd)
+ return n
+ }, ripemd160Func},
+
+ string(ethutil.LeftPadBytes([]byte{4}, 20)): &PrecompiledAccount{func(l int) *big.Int {
+ n := big.NewInt(int64(l+31)/32 + 1)
+ n.Mul(n, GasMemCpy)
+
+ return n
+ }, memCpy},
+ }
}
func sha256Func(in []byte) []byte {
='deletions'>-4/+213 * rpc api: eth_getNatSpeczelig2015-10-272-23/+18 * fix console history, lines with leadning whitespace NOT includedzelig2015-10-241-1/+1 * console:zelig2015-10-222-54/+67 * eth: clean out light node notions from ethPéter Szilágyi2015-10-191-3/+1 * cmd, eth: support switching client modes of operationPéter Szilágyi2015-10-191-0/+1 * Merge pull request #1869 from Gustav-Simonsson/gpu_minerJeffrey Wilcke2015-10-162-3/+45 |\ | * all: Add GPU mining, disabled by defaultGustav Simonsson2015-10-072-3/+45 * | core/state, core, miner: handle missing root error from state.NewGustav Simonsson2015-10-162-4/+12 * | Merge pull request #1888 from obscuren/testnetJeffrey Wilcke2015-10-091-0/+1 |\ \ | * | cmd, core, eth: added official testnetJeffrey Wilcke2015-10-091-0/+1 * | | cmd: properly initialize Olympic for all subcommandsPéter Szilágyi2015-10-071-3/+1 * | | Merge pull request #1851 from bas-vk/historyfileJeffrey Wilcke2015-10-072-11/+7 |\ \ \ | |/ / |/| | | * | console/history respect datadirBas van Kervel2015-09-252-11/+7 * | | cmd/geth: dev version numberJeffrey Wilcke2015-10-061-2/+2 * | | cmd/geth, cmd/utils, core, rpc: renamed to blockchainJeffrey Wilcke2015-10-043-3/+3 | |/ |/| * | common: fix #1818, secondary datadir paths to fall back toPéter Szilágyi2015-10-011-12/+12 |/ * cmd/geth, core: make "geth blocktest" work againFelix Lange2015-09-231-6/+0 * Merge pull request #1669 from obscuren/tx-pool-auto-resendJeffrey Wilcke2015-09-221-1/+1 |\ | * core, core/types: readd transactions after chain re-orgJeffrey Wilcke2015-09-221-1/+1 * | cmd/geth: changed version number to 1.2.0Jeffrey Wilcke2015-09-211-2/+2 |/ * tests: use lastblockhash field to validate reorgs and block headersGustav Simonsson2015-09-181-7/+9 * cmd/geth: extradata is correcly initialized with consoleKobi Gurkan2015-09-171-1/+3 * Merge pull request #1801 from fjl/ethdbJeffrey Wilcke2015-09-163-4/+4 |\ | * all: move common.Database to package ethdbFelix Lange2015-09-153-4/+4 * | cmd/geth: adds extradata flagKobi Gurkan2015-09-161-1/+15 |/ * core: split out TD from database and all internalsPéter Szilágyi2015-09-111-4/+3 * Merge pull request #1773 from obscuren/dev-modeFelix Lange2015-09-111-0/+1 |\ | * cmd/geth, cmd/utils, eth: added dev mode flagJeffrey Wilcke2015-09-091-0/+1 * | cmd/geth Autocompletion bugfix which let the console crashBas van Kervel2015-09-061-1/+1 |/ * cmd/geth: honor datadir when attachingKobi Gurkan2015-09-031-1/+1 * eth: update metrics collection to handle eth/62 algosPéter Szilágyi2015-08-251-1/+1 * eth, eth/downloader: handle header requests, table driven proto testsPéter Szilágyi2015-08-241-0/+2 * cmd/geth: bumped version 1.1.0Jeffrey Wilcke2015-08-211-3/+3 * cmd/geth: bumped version 1.0.3Jeffrey Wilcke2015-08-201-2/+2 * geth: bumped version 1.0.2Jeffrey Wilcke2015-08-201-2/+2 * Revert "fdtrack: temporary hack for tracking file descriptor usage"Jeffrey Wilcke2015-08-201-4/+0 * cmd/geth: Fix chain purging from cmd lineMaran2015-08-181-4/+3 * Merge pull request #1659 from bas-vk/exec-outputJeffrey Wilcke2015-08-151-6/+1 |\ | * main print console output for js statement given by the exec argumentBas van Kervel2015-08-141-6/+1 * | Merge pull request #1658 from bas-vk/liner-ctrl-cJeffrey Wilcke2015-08-141-0/+11 |\ \ | * | main clear current line on ctrl-CBas van Kervel2015-08-141-0/+11 * | | Merge pull request #1642 from ethereum/fix-js-console-windowsJeffrey Wilcke2015-08-142-43/+15 |\ \ \ | |/ / |/| / | |/ | * cmd/geth, jsre: restore command line editing on windowsFelix Lange2015-08-122-43/+15 * | Merge pull request #1635 from bas-vk/useragentJeffrey Wilcke2015-08-142-8/+4 |\ \ | * | support for user agentsBas van Kervel2015-08-122-8/+4 | |/ * / cmd/geth: remove spaces in client identifierFelix Lange2015-08-121-1/+1 |/ * Merge pull request #1604 from obscuren/db-mergeJeffrey Wilcke2015-08-091-13/+13 |\ | * core, eth, trie, xeth: merged state, chain, extra databases in oneJeffrey Wilcke2015-08-081-13/+13 * | cmd/geth, core/vm: setup vm settings and defaulted JIT disabledJeffrey Wilcke2015-08-091-0/+1 * | Merge pull request #1490 from obscuren/jit-vmJeffrey Wilcke2015-08-081-0/+3 |\ \ | * | core/vm, tests: implemented semi-jit vmJeffrey Wilcke2015-08-071-0/+3 * | | string version for build servercaktux2015-08-081-1/+1 | |/ |/| * | cmd/geth, eth: added canonical extra dataJeffrey Wilcke2015-08-071-2/+30 |/ * fake commit for build server :(Jeffrey Wilcke2015-08-061-1/+1 * cmd/geth: bumped version numberJeffrey Wilcke2015-08-061-1/+1 * Merge pull request #1574 from fjl/fdtrackJeffrey Wilcke2015-08-041-0/+4 |\ | * fdtrack: temporary hack for tracking file descriptor usageFelix Lange2015-08-041-0/+4 * | Merge pull request #1562 from ethersphere/blankpasswdJeffrey Wilcke2015-08-041-2/+17 |\ \ | * | jsre: leave out lines from history containing methods of the personal modulezelig2015-07-311-2/+17 | |/ * / cmd, core, eth: support for the olympic networkJeffrey Wilcke2015-08-041-0/+4 |/ * etherbase defaults to first account even if created during the sessionzelig2015-07-271-1/+2 * cmd/geth, core, eth: Version 1.0.0Jeffrey Wilcke2015-07-251-2/+1 * Merge pull request #1510 from fjl/license-fixesJeffrey Wilcke2015-07-236-12/+12 |\ | * all: update license headers to distiguish GPL/LGPLFelix Lange2015-07-236-12/+12 * | Merge pull request #1508 from karalabe/database-cachingJeffrey Wilcke2015-07-231-1/+2 |\ \ | |/ |/| | * cmd, core, eth, ethdb: cache flag to allocate memory for db internal usePéter Szilágyi2015-07-221-1/+2 * | Update disclaimerTaylor Gerring2015-07-211-3/+24 |/ * Prompt user to accept legalese when datadir doesn't existTaylor Gerring2015-07-161-0/+5 * cmd, core, eth, common: genesis preparationJeffrey Wilcke2015-07-102-2/+5 * cmd/geth: bump version 0.9.39Jeffrey Wilcke2015-07-101-1/+1 * cmd/geth: version bump 0.9.38Jeffrey Wilcke2015-07-091-1/+1 * cmd/geth, cmd/utils: changed ParamsToAddress to return errorJeffrey Wilcke2015-07-071-9/+12 * cmd/geth: version number 0.9.36Jeffrey Wilcke2015-07-071-1/+1 * all: add some godoc synopsis commentsFelix Lange2015-07-071-0/+1 * all: remove @author commentsFelix Lange2015-07-071-4/+0 * all: update license informationFelix Lange2015-07-076-27/+90 * cmd/geth: fixed testJeffrey Wilcke2015-07-071-1/+1 * Merge pull request #1428 from obscuren/coinbase-fixesJeffrey Wilcke2015-07-071-16/+1 |\ | * cmd,eth,rpc,tests: default coinbaseJeffrey Wilcke2015-07-071-16/+1 * | fix/skip tests, adapt registrar to no contract addresszelig2015-07-071-3/+9 * | fix natspec testzelig2015-07-071-1/+1 * | fix js arguments and TestContract passeszelig2015-07-071-7/+10 * | rename js methods in js_test for new console APIzelig2015-07-071-7/+7 * | fix GPO missing flagszelig2015-07-071-0/+6 * | Registrar and contractInfo handlingzelig2015-07-072-2/+2 * | Registrar and contractInfo handlingzelig2015-07-075-73/+168 |/ * cmd/geth, cmd/utils: improve interrupt handlingFelix Lange2015-07-061-3/+1 * account update: migrate or change passwordzelig2015-07-031-7/+61 * fix account orderingzelig2015-07-031-1/+1 * accounts order by keyfile ctimezelig2015-07-031-3/+3 * rpc/js coinbase returns null if no etherbase setzelig2015-07-031-3/+1 * no primary when listing accountszelig2015-07-031-4/+2 * unlock multiple passes and obsolete primaryzelig2015-07-032-17/+23 * Merge pull request #1351 from karalabe/eth61Jeffrey Wilcke2015-07-011-2/+1 |\ | * cmd/geth, cmd/utils, eth: advertise both eth/60 and eth/61Péter Szilágyi2015-07-011-2/+1 * | core, cmd/geth: improved recover functionalityJeffrey Wilcke2015-07-011-7/+29 * | core, cmd/geth: recover by numberJeffrey Wilcke2015-07-011-0/+24 |/ * cmd/geth: version bump 0.9.35Jeffrey Wilcke2015-06-301-1/+1 * cmd/geth: version bump 0.9.34Jeffrey Wilcke2015-06-301-1/+1 * cmd/geth: decent error message if metrics are disabledPéter Szilágyi2015-06-301-1/+1 * cmd, core, eth, metrics, p2p: require enabling metricsPéter Szilágyi2015-06-302-1/+7 * cmd/geth, eth, ethdb: monitor database compactionsPéter Szilágyi2015-06-301-1/+1 * cmd/geth, metrics: separate process metric collection, add diskPéter Szilágyi2015-06-301-22/+2 * cmd/geth: fix monitor panic, don't pre-fill with dummy dataPéter Szilágyi2015-06-271-10/+18 * cmd/geth: re-scale charts when changing unit magnitudesPéter Szilágyi2015-06-271-24/+38 * cmd/geth: finalize mem statsPéter Szilágyi2015-06-252-7/+7 * cmd/geth, rpc/api: fix reported metrics issuesPéter Szilágyi2015-06-251-12/+8 * cmd/geth: add memory stat collection tooPéter Szilágyi2015-06-251-0/+24 * cmd/geth: limit the maximum chart colums to 6Péter Szilágyi2015-06-251-1/+3 * cmd/geth: list the available metrics if none specifiedPéter Szilágyi2015-06-251-0/+13 * cmd/geth: polish monitor visuals, add footer, refresh flagPéter Szilágyi2015-06-251-33/+71 * cmd/geth: add attach and rows flags to the monitor commandPéter Szilágyi2015-06-25