Comments (6)
We always subtract 27 from seckp so we can think of v as 0 or 1 but v is valid if its 0, 1, 2 or 3 in seckp256k1. I wonder if this is a mistake in the YP.
from ethereumjs-util.
that should be caught by seckp256k1's verify I believe
from ethereumjs-util.
@wanderer r
& s
should I reckon, but v
has a limitation set by the yellowpaper (the valid range should be 27 to 30 according to it)
from ethereumjs-util.
Hei guys, I have 1 question:
How can I simulate ecrecover function in Solidity? I know the function exists, but it doesn't seem to return the same result as your ecrecover.
Node example:
var ethUtils = require('ethereumjs-util');
var privkey = new Buffer('3c9229289a6125f7fdf1885a77bb12c37a8d3b4962d936f7e3084dece32a3ca1', 'hex');
var data = ethUtils.sha3('a');
var vrs = ethUtils.ecsign(data, privkey);
var pubkey = ethUtils.ecrecover(data, vrs.v, vrs.r, vrs.s);
// Check !
var check1 = pubkey.toString('hex') ==
ethUtils.privateToPublic(privkey).toString('hex');
var check2 = ethUtils.publicToAddress(pubkey).toString('hex') ==
ethUtils.privateToAddress(privkey).toString('hex');
// Check is ok !
Now, I'm trying this in Solidity:
// Sending ::
// "3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb",
// 27
// "5caec23c6aa80c772fef1a52655cbb46ed5e017573b054ba8d3fa61d9d26df98",
// "48a8a544478726b4b2140b444831c2f0bbd97c819e1344482190c2ad265865ca"
contract Test {
function check(bytes32 data, uint8 v, bytes32 r, bytes32 s) returns(address) {
return ecrecover(data, v, r, s);
}
}
// Result: "0x0000000000000000000000003432313261323563316330316664333562656266"
Any ideas how I can compare the result?
Also, the private key that I used, is from your tests; How can I obtain it from the keyfile, or from GETH ?
Thank you !!
from ethereumjs-util.
@croqaz Solidity's ecrecover returns an address and not a public key.
Re: the private keys. You can use ethereumjs-wallet (or probably keythereum supports that too?) to convert back-and-forth between keyfiles and private keys.
from ethereumjs-util.
With #27 merged we check for v = {27,28}
from ethereumjs-util.
Related Issues (20)
- Split tests from index.js into separate files HOT 3
- Update TypeDoc and typedoc-plugin-markdown dev dependencies
- Examples in README for different categories
- Add basic API tests for re-exports
- Browser compatible elliptic alternative to secp256k1 HOT 2
- [Util v7| Tracking Issue for BN.js v4 and v5 interoperability issues HOT 2
- Buffer error with keccak256 related to abi.encodePacked HOT 8
- Crashes on node:12-alpine HOT 3
- [bug] hash.ts not work on alpine linux image HOT 2
- BN re-export failure HOT 1
- Error: Expected private key to be an Uint8Array HOT 8
- Node crashes when require ethereumjs-util in worker threads HOT 5
- Extend Address class to handle BN HOT 7
- Cannot read property 'fromRpcSig' of undefined HOT 2
- Memory leak HOT 2
- How to use ecrecover? HOT 8
- bnToRlp: misleading name HOT 1
- Upgrade ethereumjs-config to v2, switch from Coveralls to CodeCov
- ethereumjs-util v8 Release Planning HOT 1
- housekeeping: remove use of deprecated assert methods HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ethereumjs-util.