Addresses
如何從編碼的公鑰中獲得兩個點(x,y)?
這從兩點給出了一個有效的地址;
address(uint256(keccak256(abi.encodePacked(point[0], point[1]))) & 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
但這是否意味著如果只給你一個地址,你就不能得到用來生成它的兩個點(因為散列函式)?
散列算法的主要特點是它們是單向函式——或者換句話說,你可以從輸入中得到輸出,但你不能從輸出中得到輸入——就像橢圓曲線密碼學一樣,你不能從公鑰中獲取私鑰。在這種情況下:
keccak256(…) 返回 (bytes32)
計算(緊密打包的)參數的 Ethereum-SHA-3 (Keccak-256) 雜湊
在這種情況下,兩點。
基本上,您正在從您指定的點生成散列,如上所述,散列函式是單向函式。因此,您將無法從雜湊中獲取積分。
如果您想了解有關
hash fucntions
訪問的更多資訊:https://searchsqlserver.techtarget.com/definition/hashing
或
keccak256(...)
訪問乙太坊文件:https://solidity.readthedocs.io/en/v0.4.21/units-and-global-variables.html