diff --git a/cmd/geth/js.go b/cmd/geth/js.go index d5deea93f..6e5a6f1c7 100644 --- a/cmd/geth/js.go +++ b/cmd/geth/js.go @@ -143,10 +143,14 @@ var net = web3.net; var ds, _ = docserver.New(utils.JSpathFlag.String()) func (self *jsre) ConfirmTransaction(tx string) bool { - notice := natspec.GetNotice(self.xeth, tx, ds) - fmt.Println(notice) - answer, _ := self.Prompt("Confirm Transaction\n[y/n] ") - return strings.HasPrefix(strings.Trim(answer, " "), "y") + if self.ethereum.NatSpec { + notice := natspec.GetNotice(self.xeth, tx, ds) + fmt.Println(notice) + answer, _ := self.Prompt("Confirm Transaction\n[y/n] ") + return strings.HasPrefix(strings.Trim(answer, " "), "y") + } else { + return true + } } func (self *jsre) UnlockAccount(addr []byte) bool { diff --git a/cmd/geth/main.go b/cmd/geth/main.go index dab167bbb..5b523da3e 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -231,6 +231,7 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso utils.MinerThreadsFlag, utils.MiningEnabledFlag, utils.NATFlag, + utils.NatspecEnabledFlag, utils.NodeKeyFileFlag, utils.NodeKeyHexFlag, utils.RPCEnabledFlag, diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index a1d9eedda..974fabbdc 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -93,6 +93,10 @@ var ( Name: "identity", Usage: "node name", } + NatspecEnabledFlag = cli.BoolFlag{ + Name: "natspec", + Usage: "Enable NatSpec confirmation notice", + } // miner settings MinerThreadsFlag = cli.IntFlag{ @@ -252,26 +256,25 @@ func MakeEthConfig(clientID, version string, ctx *cli.Context) *eth.Config { } return ð.Config{ - Name: common.MakeName(clientID, version), - DataDir: ctx.GlobalString(DataDirFlag.Name), - ProtocolVersion: ctx.GlobalInt(ProtocolVersionFlag.Name), - BlockChainVersion: ctx.GlobalInt(BlockchainVersionFlag.Name), - SkipBcVersionCheck: false, - NetworkId: ctx.GlobalInt(NetworkIdFlag.Name), - LogFile: ctx.GlobalString(LogFileFlag.Name), - LogLevel: ctx.GlobalInt(LogLevelFlag.Name), - LogJSON: ctx.GlobalString(LogJSONFlag.Name), - Etherbase: ctx.GlobalString(EtherbaseFlag.Name), - MinerThreads: ctx.GlobalInt(MinerThreadsFlag.Name), - AccountManager: GetAccountManager(ctx), - VmDebug: ctx.GlobalBool(VMDebugFlag.Name), - MaxPeers: ctx.GlobalInt(MaxPeersFlag.Name), - Port: ctx.GlobalString(ListenPortFlag.Name), - NAT: GetNAT(ctx), - NodeKey: GetNodeKey(ctx), - Shh: true, - Dial: true, - BootNodes: ctx.GlobalString(BootnodesFlag.Name), + Name: common.MakeName(clientID, version), + DataDir: ctx.GlobalString(DataDirFlag.Name), + ProtocolVersion: ctx.GlobalInt(ProtocolVersionFlag.Name), + NetworkId: ctx.GlobalInt(NetworkIdFlag.Name), + LogFile: ctx.GlobalString(LogFileFlag.Name), + LogLevel: ctx.GlobalInt(LogLevelFlag.Name), + LogJSON: ctx.GlobalString(LogJSONFlag.Name), + Etherbase: ctx.GlobalString(EtherbaseFlag.Name), + MinerThreads: ctx.GlobalInt(MinerThreadsFlag.Name), + AccountManager: GetAccountManager(ctx), + VmDebug: ctx.GlobalBool(VMDebugFlag.Name), + MaxPeers: ctx.GlobalInt(MaxPeersFlag.Name), + Port: ctx.GlobalString(ListenPortFlag.Name), + NAT: GetNAT(ctx), + NatSpec: ctx.GlobalBool(NatspecEnabledFlag.Name), + NodeKey: GetNodeKey(ctx), + Shh: true, + Dial: true, + BootNodes: ctx.GlobalString(BootnodesFlag.Name), } } diff --git a/common/resolver/resolver.go b/common/resolver/resolver.go index 9c71ac85f..2858a049d 100644 --- a/common/resolver/resolver.go +++ b/common/resolver/resolver.go @@ -81,5 +81,6 @@ func storageAddress(varidx uint32, key []byte) string { data := make([]byte, 64) binary.BigEndian.PutUint32(data[60:64], varidx) copy(data[0:32], key[0:32]) + //fmt.Printf("%x %v\n", key, common.Bytes2Hex(crypto.Sha3(data))) return "0x" + common.Bytes2Hex(crypto.Sha3(data)) } diff --git a/common/resolver/resolver_test.go b/common/resolver/resolver_test.go index 17a1c4f94..7d570cbc6 100644 --- a/common/resolver/resolver_test.go +++ b/common/resolver/resolver_test.go @@ -14,7 +14,7 @@ type testBackend struct { var ( text = "test" - codehash = common.RightPadString("1234", 64) + codehash = "1234" //common.RightPadString("1234", 64) hash = common.Bytes2Hex(crypto.Sha3([]byte(text))) url = "bzz://bzzhash/my/path/contr.act" ) @@ -23,13 +23,13 @@ func NewTestBackend() *testBackend { self := &testBackend{} self.contracts = make(map[string](map[string]string)) - self.contracts[HashRegContractAddress] = make(map[string]string) - key := storageAddress(1, common.Hex2Bytes(codehash)) - self.contracts[HashRegContractAddress][key] = hash + self.contracts["0x"+HashRegContractAddress] = make(map[string]string) + key := storageAddress(1, common.Hex2BytesFixed(codehash, 32)) + self.contracts["0x"+HashRegContractAddress][key] = "0x" + hash - self.contracts[URLHintContractAddress] = make(map[string]string) - key = storageAddress(1, common.Hex2Bytes(hash)) - self.contracts[URLHintContractAddress][key] = url + self.contracts["0x"+URLHintContractAddress] = make(map[string]string) + key = storageAddress(1, common.Hex2BytesFixed(hash, 32)) + self.contracts["0x"+URLHintContractAddress][key] = "0x" + common.Bytes2Hex([]byte(url)) return self } @@ -48,6 +48,7 @@ func TestKeyToContentHash(t *testing.T) { res := New(b, URLHintContractAddress, HashRegContractAddress) chash := common.Hash{} copy(chash[:], common.Hex2BytesFixed(codehash, 32)) + got, err := res.KeyToContentHash(chash) if err != nil { t.Errorf("expected no error, got %v", err) @@ -62,7 +63,7 @@ func TestContentHashToUrl(t *testing.T) { b := NewTestBackend() res := New(b, URLHintContractAddress, HashRegContractAddress) chash := common.Hash{} - copy(chash[:], common.Hex2Bytes(hash)) + copy(chash[:], common.Hex2BytesFixed(hash, 32)) got, err := res.ContentHashToUrl(chash) if err != nil { t.Errorf("expected no error, got %v", err) diff --git a/eth/backend.go b/eth/backend.go index 264753aba..ec2444836 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -50,6 +50,7 @@ type Config struct { LogLevel int LogJSON string VmDebug bool + NatSpec bool MaxPeers int Port string @@ -144,6 +145,7 @@ type Ethereum struct { // logger logger.LogSystem Mining bool + NatSpec bool DataDir string etherbase common.Address clientVersion string @@ -205,6 +207,7 @@ func New(config *Config) (*Ethereum, error) { clientVersion: config.Name, // TODO should separate from Name ethVersionId: config.ProtocolVersion, netVersionId: config.NetworkId, + NatSpec: config.NatSpec, } eth.chainManager = core.NewChainManager(blockDb, stateDb, eth.EventMux())