DFIP 2111-B: VOC: Ethereum Virtual Machine (EVM) Support

Overview

DeFiCh/metachain is a codename research & development for DFIP 2111-B: VOC: Ethereum Virtual Machine (EVM) Support . Proposed as a DFIP on Nov 2021; DFIP 2111-B provided DeFiChain with more flexibility to think beyond what is possible today. It introduced a new dimension to the DeFiChain ecosystem, allowing us to stretch the definition of Native DeFi.

  • Smart contract capability through a turing-complete environment for faster paced innovation
  • Embrace the multi-chain future enabling easier cross compatibility and extensibility.

Security issues

If you discover a security vulnerability in DeFiCh/metachain , please see submit it privately.

License & Disclaimer

By using DeFiCh/metachain (this repo), you (the user) agree to be bound by the terms of this license.

Comments
  • chore(ts-tests): add e2e contracts

    chore(ts-tests): add e2e contracts

    What this PR does / why we need it:

    Develop and test on a simple smart contract functionality on substrate-based blockchain.

    Which issue(s) does this PR fixes?:

    Fixes #

    Additional comments?:

    kind/chore 
    opened by canonbrother 17
  • chore(evm): Add meta skeleton with manual seal

    chore(evm): Add meta skeleton with manual seal

    What this PR does / why we need it:

    Adds initial code required for meta node with manual seal.

    Which issue(s) does this PR fixes?:

    Fixes #

    Additional comments?:

    area/workflow kind/chore area/docs 
    opened by surangap 8
  • refactor(testcontainers): move testcontainers into its own package

    refactor(testcontainers): move testcontainers into its own package

    What this PR does / why we need it:

    Refactor and move ts-tests into mono-repo style packages to allow separation of context and downstream usability. This is the continuation of #42

    @defimetachain/testcontainers

    Provides easy to use and test lightweight, throwaway instances of MetaChain provisioned automatically in a Docker container.

    MetaChainContainer and StartedMetaChainContainer follows the convention defined in testcontainers/testcontainers-node

    let container: StartedMetaChainContainer;
    let rpc: ethers.providers.JsonRpcProvider;
    
    beforeEach(async () => {
      container = await new MetaChainContainer().start();
    });
    
    afterEach(async () => {
      await container.stop();
    });
    
    it('should createBlock', async function () {
      await container.createBlock();
      expect(await rpc.getBlockNumber()).toStrictEqual(1);
    });
    

    Which issue(s) does this PR fixes?:

    Fixes #78

    Additional comments?:

    The current implementation in ts-tests isn't yet migrated to use the new standard and convention defined here. That should be done as part of https://github.com/DeFiCh/metachain/issues/79.

    kind/refactor packages/network area/packages packages/testcontainers 
    opened by fuxingloh 5
  • end-to-end testing pipeline/tooling for metachain

    end-to-end testing pipeline/tooling for metachain

    What would you like to be added:

    At JellyfishSDK/jellyfish, there was a strong use of Containers + Javascript-based API for end-to-end (e2e) testing of services. Similarly, we need something like that here. Not to confuse integration or unit with e2e, e2e tests the resulting artifacts, and the entire artifact/binary lifecycle from start to finish. Hence it might not make sense to do it in Rust?

    Unit Tests

    The purpose of unit tests is to test each unit of code in isolation from the rest of the code to quickly pinpoint where code is and isn’t working as expected. You’ll put unit tests in the src directory in each file with the code that they’re testing. The convention is to create a module named tests in each file to contain the test functions and to annotate the module with cfg(test).

    Integration Tests

    In Rust, integration tests are entirely external to your library. They use your library in the same way any other code would, which means they can only call functions that are part of your library’s public API. Their purpose is to test whether many parts of your library work together correctly. Units of code that work correctly on their own could have problems when integrated, so test coverage of the integrated code is important as well. To create integration tests, you first need a tests directory.

    https://doc.rust-lang.org/book/ch11-03-test-organization.html

    Why is this needed:

    Quality.

    /triage accepted /area workflow

    triage/accepted kind/feature area/workflow 
    opened by fuxingloh 5
  • add artifact workflows with publishing

    add artifact workflows with publishing

    What would you like to be added:

    • Publish Docker Image (PR/Main/Release)
      • matrix: (linux,windows,mac)
    • Publish Binary (PR/Main/Release)

    /area workflow /triage accepted

    triage/accepted kind/feature area/workflow 
    opened by fuxingloh 5
  • chore(ts-tests): refactor `ts-tests/*` to follow pnpm and turbo workspace design

    chore(ts-tests): refactor `ts-tests/*` to follow pnpm and turbo workspace design

    What this PR does / why we need it:

    Move ts-tests/* to utilize pnpm and turbo mono-repo workspace design. With this, we managed to keep configs (eslint, prettier, babel jest) DRY. The PR "workspace-ize" ts-tests but ultimately many more PR is required to break this package into multiple smaller mono repo packages.

    Follow-up PRs required to address these:

    • [ ] ESLINT will be added back once we move to "testsuite", also part of #79
    • [x] #78

    What's new?

    As suggested in https://github.com/DeFiCh/metachain/pull/66#discussion_r966704171 I've added hardhat compile turbo workflow.

    @birthdayresearch/sticky-turbo-jest is a turbo-aware jest-preset; it automatically run dependsOn script before running jest. By taking advantage of content-aware hashing from turborepo. dependsOn only runs if the pipeline inputs has changed.

    When you run your test with @birthdayresearch/sticky-turbo-jest preset, it uses displayName from your jest config to figure out which pipeline to use. It will automatically pinpoint the corresponding dependsOn and run all the scripts specified within.

    TLDR, when you run a dependent test, it automatically recompiles your contract with hardhat when it detects changes in your contracts/*.sol file. If it has the cached version, it will simply "output" the result instead of rebuilding it.

    https://sticky.birthday.dev/packages/sticky-turbo-jest

    package.json:

      "scripts": {
        "compile": "hardhat compile",
        "test": "jest"
      },
      "jest": {
        "displayName": "test",
        "preset": "@birthdayresearch/sticky-turbo-jest"
      },
    

    turbo.json:

        "compile": {
          "inputs": ["contracts/**"],
          "outputs": ["artifacts", "cache"]
        },
        "test": {
          "inputs": ["src/**", "**/*.unit.ts", "tests-e2e/**"],
          "dependsOn": ["^build", "compile"]
        },
    

    Which issue(s) does this PR fixes?:

    Fixes part of #79

    area/workflow kind/chore area/packages packages/typescript 
    opened by fuxingloh 4
  • chore(packages): add network and typescript package

    chore(packages): add network and typescript package

    What this PR does / why we need it:

    Add internal @defimetachain/typescript for housing and keeping tsconfig.json DRY and public @defimetachain/network for various network configurations for MainNet, TestNet, and other testing purposes.

    kind/chore packages/network area/packages packages/typescript 
    opened by fuxingloh 4
  • refactor(workflows): cleanup and generalize workflows, also add pnpm workflows

    refactor(workflows): cleanup and generalize workflows, also add pnpm workflows

    What this PR does / why we need it:

    As per the title.

    • Add a general release.yml pipeline for releasing NPM packages.
    • Add environment: Release Docker for release-docker.yml for deployment gates
    • Add new workflow for pnpm:
      • Build (pnpm)
      • Lint (pnpm prettier)
      • Lint (pnpm eslint)
      • Test (pnpm) is temporary failing since there isn't any test coverage to upload.
      • Test (pnpm e2e) deprecated and removeing soon.
    • Migrate old workflow for cargo to new name:
      • Build (cargo)
      • Test (cargo)
      • Lint (cargo fmt)
      • Lint (cargo clippy)
    area/workflow kind/refactor area/docs packages/network area/packages packages/typescript 
    opened by fuxingloh 4
  • bump(deps): update node.js to >=v14.20.0

    bump(deps): update node.js to >=v14.20.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | node | engines | minor | >=14.x -> >=v14.20.0 |


    Release Notes

    nodejs/node

    v14.20.0

    Compare Source

    This is a security release.

    Notable Changes
    Commits

    v14.19.3

    Compare Source

    Notable Changes
    • This release updates OpenSSL to 1.1.1o. This update is not being treated as a security release as the issues addressed in OpenSSL 1.1.1o were assessed to not affect Node.js 14. See https://nodejs.org/en/blog/vulnerability/openssl-fixes-in-regular-releases-may2022/ for more information on how the May 2022 OpenSSL releases affects other Node.js release lines.
    • The list of GPG keys used to sign releases has been synchronized with the main branch.
    Commits

    v14.19.2

    Compare Source

    Notable Changes

    doc:

    • New release key for Bryan English

    Learn more at: #​42102 Contributed by Bryan English (@​bengl)

    npm:

    • Upgrade npm to v6.14.17.

    Learn more at: #​42900 Contributed by Ruy Adorno (@​ruyadorno)

    V8:

    • V8 had a stack overflow issue affecting the vm module, cherry-picking cc9a8a37445e from V8 solves this issue.

    Learn more at: #​41826 Contributed by Gus Caplan (@​devsnek)

    • Using getHeapSnapshot() was causing a Node.js crash due a V8 issue, this is fixed by backporting 367b0c1e7a32 from V8.

    Learn more at: #​42637 Contributed by Chengzhong Wu (@​legendecas)

    Commits

    v14.19.1

    Compare Source

    This is a security release.

    Notable Changes

    Update to OpenSSL 1.1.1n, which addresses the following vulnerability:

    • Infinite loop in BN_mod_sqrt() reachable when parsing certificates (High)(CVE-2022-0778) More details are available at https://www.openssl.org/news/secadv/20220315.txt
    Commits

    v14.19.0

    Compare Source

    Notable Changes
    Corepack

    Node.js now includes Corepack, a script that acts as a bridge between Node.js projects and the package managers they are intended to be used with during development. In practical terms, Corepack will let you use Yarn and pnpm without having to install them - just like what currently happens with npm, which is shipped in Node.js by default. Please head over to the Corepack documentation page for more information on how to use it.

    Contributed by Maël Nison - #​39608

    ICU updated

    ICU has been updated to 70.1. This updates timezone database to 2021a3, including bringing forward the start for DST for Jordan from March to February.

    Contributed by Michaël Zasso - #​40658

    New option to disable loading of native addons

    A new command line option --no-addons has been added to disallow loading of native addons.

    Contributed by Dominic Elm - #​39977

    Updated Root Certificates

    Root certificates have been updated to those from Mozilla's Network Security Services 3.71.

    Contributed by Richard Lau - #​40280

    Other Notable Changes
    • [0d448eaab5] - (SEMVER-MINOR) crypto: make FIPS related options always available (Vít Ondruch) #​36341
    • [004eafbebf] - (SEMVER-MINOR) lib: add unsubscribe method to non-active DC channels (simon-id) #​40433
    • [625be7585d] - (SEMVER-MINOR) lib: add return value for DC channel.unsubscribe (simon-id) #​40433
    • [607bc74eae] - (SEMVER-MINOR) module: support pattern trailers (Guy Bedford) #​39635
    • [f74fe2a59c] - (SEMVER-MINOR) src: make napi_create_reference accept symbol (JckXia) #​39926
    Commits

    v14.18.3

    Compare Source

    This is a security release.

    Notable changes
    Improper handling of URI Subject Alternative Names (Medium)(CVE-2021-44531)

    Accepting arbitrary Subject Alternative Name (SAN) types, unless a PKI is specifically defined to use a particular SAN type, can result in bypassing name-constrained intermediates. Node.js was accepting URI SAN types, which PKIs are often not defined to use. Additionally, when a protocol allows URI SANs, Node.js did not match the URI correctly.

    Versions of Node.js with the fix for this disable the URI SAN type when checking a certificate against a hostname. This behavior can be reverted through the --security-revert command-line option.

    More details will be available at CVE-2021-44531 after publication.

    Certificate Verification Bypass via String Injection (Medium)(CVE-2021-44532)

    Node.js converts SANs (Subject Alternative Names) to a string format. It uses this string to check peer certificates against hostnames when validating connections. The string format was subject to an injection vulnerability when name constraints were used within a certificate chain, allowing the bypass of these name constraints.

    Versions of Node.js with the fix for this escape SANs containing the problematic characters in order to prevent the injection. This behavior can be reverted through the --security-revert command-line option.

    More details will be available at CVE-2021-44532 after publication.

    Incorrect handling of certificate subject and issuer fields (Medium)(CVE-2021-44533)

    Node.js did not handle multi-value Relative Distinguished Names correctly. Attackers could craft certificate subjects containing a single-value Relative Distinguished Name that would be interpreted as a multi-value Relative Distinguished Name, for example, in order to inject a Common Name that would allow bypassing the certificate subject verification.

    Affected versions of Node.js do not accept multi-value Relative Distinguished Names and are thus not vulnerable to such attacks themselves. However, third-party code that uses node's ambiguous presentation of certificate subjects may be vulnerable.

    More details will be available at CVE-2021-44533 after publication.

    Prototype pollution via console.table properties (Low)(CVE-2022-21824)

    Due to the formatting logic of the console.table() function it was not safe to allow user controlled input to be passed to the properties parameter while simultaneously passing a plain object with at least one property as the first parameter, which could be __proto__. The prototype pollution has very limited control, in that it only allows an empty string to be assigned numerical keys of the object prototype.

    Versions of Node.js with the fix for this use a null protoype for the object these properties are being assigned to.

    More details will be available at CVE-2022-21824 after publication.

    Thanks to Patrik Oldsberg (rugvip) for reporting this vulnerability.

    Commits

    v14.18.2

    Compare Source

    Notable changes

    This release contains a c-ares update to fix a regression introduced in Node.js 14.17.5 resolving CNAME records containing underscores #​39780.

    Also included are commits to allow Node.js 14 to continue to build and pass tests on our Jenkins CI, including adding Python 3.10 to the list of allowable Python versions for building.

    Commits

    v14.18.1

    Compare Source

    This is a security release.

    Notable changes
    • CVE-2021-22959: HTTP Request Smuggling due to spaced in headers (Medium)
      • The http parser accepts requests with a space (SP) right after the header name before the colon. This can lead to HTTP Request Smuggling (HRS). More details will be available at CVE-2021-22959 after publication.
    • CVE-2021-22960: HTTP Request Smuggling when parsing the body (Medium)
      • The parse ignores chunk extensions when parsing the body of chunked requests. This leads to HTTP Request Smuggling (HRS) under certain conditions. More details will be available at CVE-2021-22960 after publication.
    Commits

    v14.18.0

    Compare Source

    Notable Changes
    • [3a60de0135] - assert: change status of legacy asserts (James M Snell) #​38113
    • [df37c106a7] - (SEMVER-MINOR) buffer: introduce Blob (James M Snell) #​36811
    • [223494c548] - (SEMVER-MINOR) buffer: add base64url encoding option (Filip Skokan) #​36952
    • [14fc4ddabc] - (SEMVER-MINOR) child_process: allow options.cwd receive a URL (Khaidi Chu) #​38862
    • [b68b13acb3] - (SEMVER-MINOR) child_process: add timeout to spawn and fork (Nitzan Uziely) #​37256
    • [da98c9f99b] - (SEMVER-MINOR) child_process: allow promisified exec to be cancel (Carlos Fuentes) #​34249
    • [779310ac87] - (SEMVER-MINOR) child_process: add 'overlapped' stdio flag (Thiago Padilha) #​29412
    • [40eb3b79f1] - (SEMVER-MINOR) cli: add -C alias for --conditions flag (Guy Bedford) #​38755
    • [39eba0a2e1] - (SEMVER-MINOR) cli: add --node-memory-debug option (Anna Henningsen) #​35537
    • [d8d9a9628a] - (SEMVER-MINOR) dns: add "tries" option to Resolve options (Luan Devecchi) #​39610
    • [15ba19b020] - (SEMVER-MINOR) dns: allow --dns-result-order to change default dns verbatim (Ouyang Yadong) #​38099
    • [307c1d817f] - doc: refactor fs docs structure (James M Snell) #​37170
    • [9ee3f77e32] - (SEMVER-MINOR) errors: remove experimental from --enable-source-maps (Benjamin Coe) #​37362
    • [e73bfed2f4] - esm: deprecate legacy main lookup for modules (Guy Bedford) #​36918
    • [989c204a58] - (SEMVER-MINOR) fs: allow empty string for temp directory prefix (Voltrex) #​39028
    • [ef72490cde] - (SEMVER-MINOR) fs: allow no-params fsPromises fileHandle read (Nitzan Uziely) #​38287
    • [cad9d20f64] - (SEMVER-MINOR) fs: add support for async iterators to fsPromises.writeFile (HiroyukiYagihashi) #​37490
    • [2b0e2706c0] - fs: improve fsPromises readFile performance (Nitzan Uziely) #​37608
    • [fe12cc07b3] - (SEMVER-MINOR) fs: add fsPromises.watch() (James M Snell) #​37179
    • [2459c115a8] - (SEMVER-MINOR) fs: allow position parameter to be a BigInt in read and readSync (Darshan Sen) #​36190
    • [6544cfb4b9] - (SEMVER-MINOR) http2: add support for sensitive headers (Anna Henningsen) #​34145
    • [a6c6cbb4e6] - (SEMVER-MINOR) http2: allow setting the local window size of a session (Yongsheng Zhang) #​35978
    • [1e5aca550c] - inspector: mark as stable (Gireesh Punathil) #​37748
    • [93af04afbb] - (SEMVER-MINOR) module: add support for URL to import.meta.resolve (Antoine du Hamel) #​38587
    • [f9f9389d83] - (SEMVER-MINOR) module: add support for node:‑prefixed require(…) calls (ExE Boss) #​37246
    • [87c71065eb] - (SEMVER-MINOR) net: introduce net.BlockList (James M Snell) #​34625
    • [b421d99a48] - (SEMVER-MINOR) node-api: allow retrieval of add-on file name (Gabriel Schulhof) #​37195
    • [6a4811df8a] - (SEMVER-MINOR) os: add os.devNull (Luigi Pinca) #​38569
    • [4a88ddeeca] - (SEMVER-MINOR) perf_hooks: introduce createHistogram (James M Snell) #​37155
    • [1a6bf1c4a3] - (SEMVER-MINOR) process: add api to enable source-maps programmatically (legendecas) #​39085
    • [99735a6fe8] - (SEMVER-MINOR) process: add 'worker' event (James M Snell) #​38659
    • [3982919317] - (SEMVER-MINOR) process: add direct access to rss without iterating pages (Adrien Maret) #​34291
    • [526e6c7bde] - (SEMVER-MINOR) readline: add AbortSignal support to interface (Nitzan Uziely) #​37932
    • [e6eee08692] - (SEMVER-MINOR) readline: add support for the AbortController to the question method (Mattias Runge-Broberg) #​33676
    • [32de361d70] - (SEMVER-MINOR) readline: add history event and option to set initial history (Mattias Runge-Broberg) #​33662
    • [797f7f8a38] - (SEMVER-MINOR) repl: add auto‑completion for node:‑prefixed require(…) calls (ExE Boss) #​37246
    • [abfd71b64c] - (SEMVER-MINOR) src: call overload ctor from the original ctor (Darshan Sen) #​39768
    • [1efae01b18] - (SEMVER-MINOR) src: add a constructor overload for CallbackScope (Darshan Sen) #​39768
    • [f7933804ba] - (SEMVER-MINOR) src: allow to negate boolean CLI flags (Michaël Zasso) #​39023
    • [6d06ac2202] - (SEMVER-MINOR) src: add --heapsnapshot-near-heap-limit option (Joyee Cheung) #​33010
    • [577d228ca0] - (SEMVER-MINOR) src: add way to get IsolateData and allocator from Environment (Anna Henningsen) #​36441
    • [658a266cd4] - (SEMVER-MINOR) src: allow preventing SetPrepareStackTraceCallback (Shelley Vohr) #​36447
    • [f421422ea4] - (SEMVER-MINOR) src: add maybe versions of EmitExit and EmitBeforeExit (Anna Henningsen) #​35486
    • [a62d4d60f4] - (SEMVER-MINOR) stream: add readableDidRead if has been read from (Robert Nagy) #​39589
    • [63502131a3] - (SEMVER-MINOR) stream: pipeline accept Buffer as a valid first argument (Nitzan Uziely) #​37739
    • [68bbebd42c] - (SEMVER-MINOR) tls: allow reading data into a static buffer (Andrey Pechkurov) #​35753
    • [1cbb74d63d] - (SEMVER-MINOR) url: expose urlToHttpOptions utility (Yongsheng Zhang) #​35960
    • [8eb11356dd] - (SEMVER-MINOR) util: expose toUSVString (Robert Nagy) #​39814
    • [84fcdc3074] - (SEMVER-MINOR) v8: implement v8.stopCoverage() (Joyee Cheung) #​33807
    • [b238b6bf17] - (SEMVER-MINOR) v8: implement v8.takeCoverage() (Joyee Cheung) #​33807
    • [9f6bc58da8] - (SEMVER-MINOR) worker: add setEnvironmentData/getEnvironmentData (James M Snell) #​37486
    Commits
    Semver-minor commits
    • [f3563d3197] - (SEMVER-MINOR) async_hooks: use new v8::Context PromiseHook API (Stephen Belanger) #​36394
    • [df37c106a7] - (SEMVER-MINOR) buffer: introduce Blob (James M Snell) #​36811
    • [223494c548] - (SEMVER-MINOR) buffer: add base64url encoding option (Filip Skokan) #​36952
    • [14fc4ddabc] - (SEMVER-MINOR) child_process: allow options.cwd receive a URL (Khaidi Chu) #​38862
    • [b68b13acb3] - (SEMVER-MINOR) child_process: add timeout to spawn and fork (Nitzan Uziely) #​37256
    • [da98c9f99b] - (SEMVER-MINOR) child_process: allow promisified exec to be cancel (Carlos Fuentes) #​34249
    • [779310ac87] - (SEMVER-MINOR) child_process: add 'overlapped' stdio flag (Thiago Padilha) #​29412
    • [40eb3b79f1] - (SEMVER-MINOR) cli: add -C alias for --conditions flag (Guy Bedford) #​38755
    • [39eba0a2e1] - (SEMVER-MINOR) cli: add --node-memory-debug option (Anna Henningsen) #​35537
    • [d9b58a0262] - (SEMVER-MINOR) deps: V8: cherry-pick fa4cb17 (Stephen Belanger) #​38577
    • [9d7177c152] - (SEMVER-MINOR) deps: V8: cherry-pick 4c07451 (Stephen Belanger) #​36394
    • [ec0f0ef8ef] - (SEMVER-MINOR) deps: V8: cherry-pick 5f44131 (Stephen Belanger) #​36394
    • [3e7238e45a] - (SEMVER-MINOR) deps: V8: cherry-pick 272445f (Stephen Belanger) #​36394
    • [214e568597] - (SEMVER-MINOR) deps: V8: backport c0fceaa (Stephen Belanger) #​36394
    • [d8d9a9628a] - (SEMVER-MINOR) dns: add "tries" option to Resolve options (Luan Devecchi) #​39610
    • [15ba19b020] - (SEMVER-MINOR) dns: allow --dns-result-order to change default dns verbatim (Ouyang Yadong) #​38099
    • [defb77cac9] - (SEMVER-MINOR) doc: add missing change to resolver ctor (Luan Devecchi) #​39610
    • [9ee3f77e32] - (SEMVER-MINOR) errors: remove experimental from --enable-source-maps (Benjamin Coe) #​37362
    • [989c204a58] - (SEMVER-MINOR) fs: allow empty string for temp directory prefix (Voltrex) #​39028
    • [ef72490cde] - (SEMVER-MINOR) fs: allow no-params fsPromises fileHandle read (Nitzan Uziely) #​38287
    • [cad9d20f64] - (SEMVER-MINOR) fs: add support for async iterators to fsPromises.writeFile (HiroyukiYagihashi) #​37490
    • [fe12cc07b3] - (SEMVER-MINOR) fs: add fsPromises.watch() (James M Snell) #​37179
    • [2459c115a8] - (SEMVER-MINOR) fs: allow position parameter to be a BigInt in read and readSync (Darshan Sen) #​36190
    • [6544cfb4b9] - (SEMVER-MINOR) http2: add support for sensitive headers (Anna Henningsen) #​34145
    • [a6c6cbb4e6] - (SEMVER-MINOR) http2: allow setting the local window size of a session (Yongsheng Zhang) #​35978
    • [93af04afbb] - (SEMVER-MINOR) module: add support for URL to import.meta.resolve (Antoine du Hamel) #​38587
    • [f9f9389d83] - (SEMVER-MINOR) module: add support for node:‑prefixed require(…) calls (ExE Boss) #​37246
    • [76d4f22bab] - (SEMVER-MINOR) net: allow net.BlockList to use net.SocketAddress objects (James M Snell) #​37917
    • [82363d864d] - (SEMVER-MINOR) net: add SocketAddress class (James M Snell) #​37917
    • [0202ba46b8] - (SEMVER-MINOR) net: make net.BlockList cloneable (James M Snell) #​37917
    • [a41a3e3b3f] - (SEMVER-MINOR) net: make blocklist family case insensitive (James M Snell) #​34864
    • [87c71065eb] - (SEMVER-MINOR) net: introduce net.BlockList (James M Snell) #​34625
    • [b421d99a48] - (SEMVER-MINOR) node-api: allow retrieval of add-on file name (Gabriel Schulhof) #​37195
    • [6a4811df8a] - (SEMVER-MINOR) os: add os.devNull (Luigi Pinca) #​38569
    • [4a88ddeeca] - (SEMVER-MINOR) perf_hooks: introduce createHistogram (James M Snell) #​37155
    • [1a6bf1c4a3] - (SEMVER-MINOR) process: add api to enable source-maps programmatically (legendecas) #​39085
    • [99735a6fe8] - (SEMVER-MINOR) process: add 'worker' event (James M Snell) #​38659
    • [3982919317] - (SEMVER-MINOR) process: add direct access to rss without iterating pages (Adrien Maret) #​34291
    • [526e6c7bde] - (SEMVER-MINOR) readline: add AbortSignal support to interface (Nitzan Uziely) #​37932
    • [e6eee08692] - (SEMVER-MINOR) readline: add support for the AbortController to the question method (Mattias Runge-Broberg) #​33676
    • [32de361d70] - (SEMVER-MINOR) readline: add history event and option to set initial history (Mattias Runge-Broberg) #​33662
    • [797f7f8a38] - (SEMVER-MINOR) repl: add auto‑completion for node:‑prefixed require(…) calls (ExE Boss) #​37246
    • [abfd71b64c] - (SEMVER-MINOR) src: call overload ctor from the original ctor (Darshan Sen) #​39768
    • [1efae01b18] - (SEMVER-MINOR) src: add a constructor overload for CallbackScope (Darshan Sen) #​39768
    • [1aa2080d29] - (SEMVER-MINOR) src: fix align in cares_wrap.h (Luan) #​39610
    • [f7933804ba] - (SEMVER-MINOR) src: allow to negate boolean CLI flags (Michaël Zasso) #​39023
    • [6d06ac2202] - (SEMVER-MINOR) src: add --heapsnapshot-near-heap-limit option (Joyee Cheung) #​33010
    • [4091eb9db7] - (SEMVER-MINOR) src: move node_binding to modern THROW_ERR* (James M Snell) #​35469
    • [577d228ca0] - (SEMVER-MINOR) src: add way to get IsolateData and allocator from Environment (Anna Henningsen) #​36441
    • [658a266cd4] - (SEMVER-MINOR) src: allow preventing SetPrepareStackTraceCallback (Shelley Vohr) #​36447
    • [f421422ea4] - (SEMVER-MINOR) src: add maybe versions of EmitExit and EmitBeforeExit (Anna Henningsen) #​35486
    • [a62d4d60f4] - (SEMVER-MINOR) stream: add readableDidRead if has been read from (Robert Nagy) #​39589
    • [63502131a3] - (SEMVER-MINOR) stream: pipeline accept Buffer as a valid first argument (Nitzan Uziely) #​37739
    • [72ef41c72b] - (SEMVER-MINOR) test: add wpt tests for Blob (Michaël Zasso) #​36811
    • [68bbebd42c] - (SEMVER-MINOR) tls: allow reading data into a static buffer (Andrey Pechkurov) #​35753
    • [587deacad9] - (SEMVER-MINOR) tools: add Worker to type-parser (James M Snell) #​38659
    • [1cbb74d63d] - (SEMVER-MINOR) url: expose urlToHttpOptions utility (Yongsheng Zhang) #​35960
    • [8eb11356dd] - (SEMVER-MINOR) util: expose toUSVString (Robert Nagy) #​39814
    • [84fcdc3074] - (SEMVER-MINOR) v8: implement v8.stopCoverage() (Joyee Cheung) #​33807
    • [b238b6bf17] - (SEMVER-MINOR) v8: implement v8.takeCoverage() (Joyee Cheung) #​33807
    • [9f6bc58da8] - (SEMVER-MINOR) worker: add setEnvironmentData/getEnvironmentData (James M Snell) #​37486
    Semver-patch commits

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    kind/dependencies 
    opened by renovate[bot] 4
  • chore(pnpm): use pnpm instead of npm

    chore(pnpm): use pnpm instead of npm

    What this PR does / why we need it:

    With pnpm, it creates a non-flat node_modules directory. When installing dependencies with npm or Yarn Classic, all packages are hoisted to the root of the modules' directory. As a result, the source code has access to dependencies that are not added as dependencies to the project.

    Hosting is an incredibly challenging problem in mono-repo projects, node module resolver needs to know where to look for dependencies. When project dependencies are not hoisted automatically due to version conflicts (see below), it creates multiple copies of a dependency at different layers of your package hierarchy, makes it impossible to manage.

    ├── package.json
    ├── services/
    │   └── service-a
    │       ├── AService
    │       └── node_modules
    │           └── @birthdaycloud/[email protected]
    └── node_modules
        └── @birthdaycloud/[email protected]
    

    Given the above, we're using the node default package resolution technique, and @foo/deps-a depends on @foo/deps-b and you require @foo/deps-a for service-a. Since @foo/deps-b is a dependency of @foo/deps-a and it isn't intrinsically defined within service-a/package.json, the default npm behavior would be to deduplicate by hoisting it to the root ./node_modules. The runtime would panic as it won't know how to resolve @foo/deps-b from service-a/node_modules since it's hoisted up while @foo/deps-b isn't.

    Migration Plan:

    • [ ] Keep ts-tests isolated for now, while focusing on a clean pnpm structure and migrating ts-tests into packages/* at a later date.
    kind/chore area/docs 
    opened by fuxingloh 4
  • bump(deps): update dependency typescript to ^4.8.2

    bump(deps): update dependency typescript to ^4.8.2

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | typescript (source) | ^4.7.4 -> ^4.8.2 | age | adoption | passing | confidence |


    Release Notes

    Microsoft/TypeScript

    v4.8.2

    Compare Source

    For release notes, check out the release announcement.

    For the complete list of fixed issues, check out the

    Downloads are available on:


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    kind/dependencies 
    opened by renovate[bot] 4
  • bump(deps): update dependency hardhat to ^2.11.2

    bump(deps): update dependency hardhat to ^2.11.2

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | hardhat (source) | ^2.11.1 -> ^2.11.2 | age | adoption | passing | confidence |


    Release Notes

    nomiclabs/hardhat

    v2.11.2

    Compare Source

    This new version of Hardhat brings several fixes and improvements:

    • Solidity 0.8.17 is now supported and used by default in the sample projects.
    • When forking a network, the disk cache is always used (thanks @​bernard-wagner!)
    • Stack traces are shown by default in CI servers
    • We fixed a problem related to the validation of the eth_getStorageAt being too restrictive (thanks @​aathan!)
    • Reverted an unintentional breaking change in the type of the resolved config
    • Improved the heuristic for detecting that a contract deployment failed because the code size was too large

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    kind/dependencies 
    opened by renovate[bot] 4
  • Deciding Benchmark: TPM & Bandwidth

    Deciding Benchmark: TPM & Bandwidth

    What is the TPS we want to establish for Meta Chain? What kind of network bandwidth is required to run the chain? Or network growth rate. Since we're using Native Chain validators, the decision has to be made as a whole and consider Native Chain stats and chain parameters.

    needs/triage kind/feature area/meta area/ain 
    opened by fuxingloh 1
  • bump(deps): update rust crate scale-info to 2.2.0

    bump(deps): update rust crate scale-info to 2.2.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | scale-info (source) | dependencies | minor | 2.1.2 -> 2.2.0 |


    Release Notes

    paritytech/scale-info

    v2.2.0

    The minimum Rust version is bumped to 1.60.0 in this release owing to using weak dependency crate features. Otherwise there are no breaking changes.

    Changed
    • Loosen restriction on TypeDefBitSequence::new() so that bitvec isn't required, and try to avoid pulling in bitvec when the std feature is enabled (#​168)

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    kind/dependencies area/meta meta/runtime 
    opened by renovate[bot] 3
  • NativeChain optionally require MetaChain Execution Layer?

    NativeChain optionally require MetaChain Execution Layer?

    What would you like to be added:

    While the current proposed specification (earmark for documentation in #8) requires MetaChain to run alongside NativeChain 100% of the time. This issue proposes the possibility of running NativeChain without connectivity to MetaChain for sustaining existing node operator operations.

    While for miners, it is required (or preferably required) for them to have both chains up since they need introspection to the internal state of both chains for trustless bridging. A case can be made for a miner that doesn't care about mining on MetaChain (due to the cost of maintaining both chains and ignoring EVM chain since rewards come from Native chain only) and modify their node such that they always mine an empty block/template for EVM. (Due to trustless bridging, they can implement "mindless bridging" where the modified node doesn't process trustless bridging and take the amount as it is without during state verification.)

    That being said, tokenomics could easily be adjusted for "forced" participation on MetaChain. Economically incentivizing miners to run EVM nodes when a percentage of their rewards can only be claimed on the EVM side.

    While for the connectivity providers (e.g. think ocean or infura) that don't care about EVM DFI and only process UTXO DFI. They "technically" don't need to be aware of the EVM state or have no concern over the "internal state" of Meta Chain.

    Why is this needed:

    • It won't force immediate deprecation/upgrade on node operators as there are increased complexity and changes to operation when running 2 nodes.
    • Allow non miners to run Native Chain without Meta Chain.
    needs/triage kind/feature area/meta area/ain 
    opened by fuxingloh 1
  • Bi-directional Native to Meta Asset

    Bi-directional Native to Meta Asset "Trustless" Bridging

    What would you like to be added:

    Bi-directional bridging of assets between Native & Meta Chain. Essentially a trustless bridge between the 2 chain within the same ecosystem. This requires understanding of the current trustless bridging design that earmark to be documented in #8.

    Introduction of 2 Smart Contract (DfTX & EVM Contract). All supply of DFI comes from the Native Chain. Burning on Native = minting on Meta and vice-versa.

    This requires the relevant Transactions to be performed and exchanged between chains. The transaction must be interpolated from 2 chains.

    • Native DfTx.Meta.send(pubKey, AccountDFI.Amount), burn from Account, claim on EVM
    • Meta Contract.send(pubKey, EVMNativeDFI.Amount), burn from Contract, claim on Native Account

    Implementation on Native DMCHandler() and Meta Connect/Mint Handler

    RPC Methods in https://github.com/DeFiCh/metachain/issues/89 and related to #94

    • The proposed use of a global counter on both Native and Meta to track balance movement to set governance limits.

    RPC metaConsensusRpc_mintBlock and handled on Native DMCHandler():

    Extract "DfTx.Meta.send" on Native and pass it as structured request params when minting block on MetaChain. MetaChain will automatically include "minting" transaction crediting to the respective address.

    RPC metaConsensusRpc_connectBlock and handled on Native DMCHandler():

    Extract "Meta Contract.send" on Meta and return it as a structured response for DMCHandler() to process "bridging claims" on the Native layer via DMCHandler(). Burn Meta > Mint Native.

    needs/triage kind/feature meta/consensus area/meta area/ain 
    opened by fuxingloh 1
  • Native Consensus to Meta Consensus connectively

    Native Consensus to Meta Consensus connectively

    Consensus issues that are directly related to Native Chain and Meta Chain connectively. Asset bridging is built on-top of the base connectively hence moved out of this picture.

    Issues

    • https://github.com/DeFiCh/metachain/issues/94
    • https://github.com/DeFiCh/metachain/issues/93
    • https://github.com/DeFiCh/metachain/issues/89
    • https://github.com/DeFiCh/metachain/issues/80
    • https://github.com/DeFiCh/metachain/issues/45
    triage/accepted kind/feature meta/consensus area/meta 
    opened by fuxingloh 0
Owner
DeFiChain
Decentralized finance enabled on Bitcoin.
DeFiChain
Parser and test runner for testing compatable common Ethereum full node tests against Polygon Zero's EVM.

EVM Test Parses and runs compatible common Ethereum tests from ethereum/tests against Polygon Zero's EVM. Note: This repo is currently very early in d

Mir Protocol 2 Aug 25, 2022
Substreams development kit for Ethereum chains, contains Firehose Block model and helpers as well as utilities for Ethereum ABI encoding/decoding.

Substreams Ethereum Substreams development kit for Ethereum chains, contains Rust Firehose Block model and helpers as well as utilities for Ethereum A

StreamingFast 10 Sep 13, 2022
EVM compatible chain with NPoS/PoC consensus

Reef Chain Reef chain is written in Rust. A basic familiarity with Rust tooling is required. To learn more about Reef chain, please refer to Documenta

Reef Finance 142 Sep 7, 2022
A temporary repo for ETH connector to be used by EVM

ETH connector for Rainbow bridge Definitions bridgedETH - NEP-141 fungible-token representation of ETH inside Near. nETH - native ETH inside Near EVM.

Project Aurora 36 Jul 26, 2022
Fiddi is a command line tool that does the boring and complex process of checking and processing/watching transactions on EVM compatible Blockchain.

Fiddi is a command line tool that does the boring and complex process of checking and processing/watching transactions on EVM compatible Blockchain.

Ahmad Abdullahi Adamu 6 Sep 16, 2022
Selendra is a multichains interoperable nominated Proof-of-Stake network for developing and running Substrate-based and EVM compatible blockchain applications.

Selendra An interoperable nominated Proof-of-Stake network for developing and running Substrate-based and EVM compatible blockchain applications. Read

Selendra 15 Sep 19, 2022
Bellman zkSNARK library for community with Ethereum's BN256 support

bellman "Community edition" Originally developed for ZCash, with extensions from us to make it a little more pleasant. Uses our "community edition" pa

Matter Labs 103 Sep 26, 2022
Custom Ethereum vanity address generator made in Rust

ethaddrgen Custom Ethereum address generator Get a shiny ethereum address and stand out from the crowd! Disclaimer: Do not use the private key shown i

Jakub Hlusička 144 Sep 5, 2022
Rust Ethereum 2.0 Client

Lighthouse: Ethereum 2.0 An open-source Ethereum 2.0 client, written in Rust and maintained by Sigma Prime. Documentation Overview Lighthouse is: Read

Sigma Prime 2k Sep 22, 2022
Parity-Bridge — Bridge between any two ethereum-based networks

Deprecated Bridges This repo is deprecated. Originally it contained the ETH <> ETH-PoA bridge (see tumski tag). Later it was repurposed for ETH-PoA <>

Parity Technologies 314 Sep 12, 2022
The fast, light, and robust client for the Ethereum mainnet.

OpenEthereum Fast and feature-rich multi-network Ethereum client. » Download the latest release « Table of Contents Description Technical Overview Bui

OpenEthereum 1.6k Sep 21, 2022
An Ethereum 2.0 Emulator for Local Testing of Eth2 Applications

Mousse is an Ethereum 2.0 emulator for local testing of Eth2 applications (mainly Rollups). HTTP Server The REST API definition can be found in the ht

Mousse 46 Sep 10, 2022
C++ `std::unique_ptr` that represents each object as an NFT on the Ethereum blockchain

C++ `std::unique_ptr` that represents each object as an NFT on the Ethereum blockchain

null 1.9k Sep 18, 2022
Rust client to Opensea's APIs and Ethereum smart contracts

opensea.rs Rust bindings & CLI to the Opensea API and Contracts CLI Usage Run cargo r -- --help to get the top level help menu: opensea-cli 0.1.0 Choo

Georgios Konstantopoulos 213 Sep 25, 2022
Ethereum Improvement Proposal Validator

EIP validator An engine which ensures Ethereum Improvement Proposals meet certain requirements. Getting Started To install eipv and validate the EIPs

null 4 Dec 6, 2021
Terra Trophies is a copy of Ethereum's POAP project for Terra

Terra Trophies Terra Trophies is a copy of Ethereum's POAP project for Terra. It allows anyone to create digital badges for participants of events, or

larry.{ust,sol,thor} 16 Sep 22, 2022
An Ethereum compatible Substrate blockchain for bounties and governance for the Devcash community.

Substrate Node Template A fresh FRAME-based Substrate node, ready for hacking ?? Getting Started Follow the steps below to get started with the Node T

null 4 Mar 30, 2022
Scans the Ethereum network for USDT ERC-20 token transfer transactions

ethscan This is a Rust command line program for scanning the Ethereum blockchain for USDT transfers within a time span and amount span. prerequisites

Frank Buss 5 Sep 12, 2022
Terabethia - A Bridge and Messaging Protocol between Ethereum and the Internet Computer.

Terabethia - A Bridge Between Ethereum & the Internet Computer Terabethia is a bridge between Ethereum & the Internet Computer that contracts in both

Psychedelic 34 Sep 13, 2022