Skip to content

Instantly share code, notes, and snippets.

View ark930's full-sized avatar
🎯
Focusing

Edwin ark930

🎯
Focusing
View GitHub Profile

Precompiled contract

预编译合约是把一些在 EVM 中执行较慢、消耗较多 GAS、实现困难的计算(大部分是密码学相关)放在 EVM 外部执行,然后再将计算结果传回 EVM 中。

EVM 指令执行慢、花费多的一个因素是它内部的字宽是 256 位的,而不是典型的 64 位,在一些算术指令运行不及 64位机器上来的快。

而预编译合约是计算密集型函数,这些函数已经有了高度优化的底层实现,甚至可能使用现代 CPU 的高级功能,例如矢量指令(一次执行许多计算),而这完全无法与 EVM 的指令集一起使用。

目前定义了 9 中预编译合约, 合约地址对应为 0x01-0x08 和 0x0d:

  1. Recovery of ECDSA signature
{"claims":[{"url":"http://23.106.254.71//attestation-service","timestamp":1587727868,"type":"ATTESTATION_SERVICE_URL"}],"meta":{"address":"0xF0D9beb242a9E256b1F6934bd4eC763DC8F186dd","signature":"0xde13bf1f22c1a71ee0e034b757682d85832f32593c7b7e7575c2ccabb0d887175aee2078745787d61f997ff5e73d230648a103726ed5db09a5bf19307402a0f21b"}}
CELO_VALIDATOR_ADDRESS=7ba3e6801e0e2fbd41f5675675b7173ca43521de
CELO_VALIDATOR_GROUP_ADDRESS=a5d6fc9a51186e3202d6b56d310636ede8288bba
CELO_GENESIS_VALIDATOR_SIGNER_ADDRESS=d91afc8fa15086bcb6bcb1667bd36d637db70a9e
CELO_GENESIS_VALIDATOR_SIGNER_BLS_PUBLIC_KEY=2f6ae8eb0fde9ebcfe5dde7db7cd7a0e1cf5eba3d2c5e8bfec71d9fba3c87c85be3f6b957667a533ae2bb88479b98001080705005c2460b9fd29dba6c7e7c4ed3990b78c4814f6d96ef047401cb2f4a29e0b123d099134cb7d03ea2138a64c00
@ark930
ark930 / substrate-offchain-http.rs
Created September 27, 2019 07:39
Make HTTP request on substrate offchain worker
use substrate_primitives::offchain::{HttpRequestStatus, Timestamp, HttpError};
use sr_io::offchain::http::Request;
use rstd::prelude::*;
pub const USER_AGENT: &str = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 \
(KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36";
pub enum HttpFail {
RequestStartFail,
RequestAddHeaderFail,

Keybase proof

I hereby claim:

  • I am ark930 on github.
  • I am ark930 (https://keybase.io/ark930) on keybase.
  • I have a public key ASCLm1Qv_q_LXHA-qgYeuSK-tLRPnOdpvMCZP2aAknqKSQo

To claim this, I am signing this object: