Diem’s mission is to build a trusted and innovative financial network that empowers people and businesses around the world.

Overview

Note to readers: On December 1, 2020, the Libra Association was renamed to Diem Association. The project repos are in the process of being migrated. All projects will remain available for use here until the migration to a new GitHub Organization is complete.

Diem Logo

Diem Rust Crate Documentation (main) License grcov

Diem Core implements a decentralized, programmable database which provides a financial infrastructure that can empower billions of people.

Note to Developers

  • Diem Core is a prototype.
  • The APIs are constantly evolving and designed to demonstrate types of functionality. Expect substantial changes before the release.
  • We’ve launched a testnet that is a live demonstration of an early prototype of the Diem Blockchain software.

Contributing

To begin contributing, sign the CLA. You can learn more about contributing to the Diem project by reading our Contribution Guide and by viewing our Code of Conduct.

Getting Started

Learn About Diem

Try Diem Core

Technical Papers

Blog

Community

License

Diem Core is licensed as Apache 2.0.

Comments
  • Bump ini from 1.3.5 to 1.3.8 in /developers.libra.org/website

    Bump ini from 1.3.5 to 1.3.8 in /developers.libra.org/website

    Bumps ini from 1.3.5 to 1.3.8.

    Commits
    • a2c5da8 1.3.8
    • af5c6bb Do not use Object.create(null)
    • 8b648a1 don't test where our devdeps don't even work
    • c74c8af 1.3.7
    • 024b8b5 update deps, add linting
    • 032fbaf Use Object.create(null) to avoid default object property hazards
    • 2da9039 1.3.6
    • cfea636 better git push script, before publish instead of after
    • 56d2805 do not allow invalid hazardous string as section name
    • See full diff in compare view
    Maintainer changes

    This version was pushed to npm by isaacs, a new releaser for ini since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    cla-signed dependencies javascript 
    opened by dependabot[bot] 126
  • CRITICAL security vuln fixed

    CRITICAL security vuln fixed

    I've discovered an alarming vulnerability, but fortunately there's a really simple fix so I've sent a pull request to address it.

    In the current implementation, trusted 'validator nodes' are core to the security model. This means that hard power is centralised around these few entities. The protocol itself depends on these entities to (as the name suggests) validate the protocol. This means the protocol is whatever they decide it is. These entities can change the rules whenever they want. This means they can freeze your coins, take your coins, issue new coins, or really whatever they want - the sky is the limit.

    This problem can easily be solved by using a permissionless system where the hard power is decentralised across a very large number of participants in such a way that making changes to the protocol is impossible without near unanimous agreement by everyone involved.

    This pull request contains a patch to the existing codebase to resolve this issue.

    Edit: related issue: https://github.com/binance-chain/node-binary/issues/36

    opened by gazhayes 119
  • [cluster-test] Add experiment to automatically generate CPU FlameGraph

    [cluster-test] Add experiment to automatically generate CPU FlameGraph

    Summary

    • We generate load on the cluster and pick one validator and run perf against it to generate the FlameGraph
    • This FlameGraph is then copied locally to cluster-test.
    • The next step would be to upload this local file to S3

    Test Plan

    Tested on my cluster

    cluster_test cla-unsigned 
    opened by ankushagarwal 90
  • WIP: migrate forge to new cloud

    WIP: migrate forge to new cloud

    Temp change to kube.py for testing- will revert back

    Motivation

    Migrate forge to new cloud- using this pr to test the backend. Currently set up to run in parallel to the jobs done on Novi servers.

    cla-signed stale 
    opened by jsladerman 79
  • fix RUSTSEC vulnerabilities

    fix RUSTSEC vulnerabilities

    Upgraded the following: regex, zeroize, nix, thread_local, tokio

    Compiled with no issues (on linux vm- can't compile on M1 mac until rocksdb is updated per https://github.com/diem/diem/pull/10295) and fixes their respective RUSTSEC vulnerabilities thrown by cargo audit

    Left out time crate because it is only used as a sub-dependency of chrono, which is already updated to latest version and seems to have no plans to upgrade the crate. However, per https://github.com/chronotope/chrono/pull/578#issuecomment-1075907329, it seems chrono is unaffected by the vulnerability.

    Also left out scratchpad because it is a custom diem crate which cargo audit confuses with a different crate with the same name

    opened by jsladerman 72
  • WIP

    WIP

    Motivation

    (Write your motivation for proposed changes here.)

    Have you read the Contributing Guidelines on pull requests?

    (Write your answer here.)

    Test Plan

    (Share your test plan here. If you changed code, please provide us with clear instructions for verifying that your changes work.)

    Related PRs

    (If this PR adds or changes functionality, please take some time to update the docs at https://github.com/diem/diem/tree/main/developers.diem.com, and link to your PR here.)

    If targeting a release branch, please fill the below out as well

    • Justification and breaking nature (who does it affect? validators, full nodes, tooling, operators, AOS, etc.)
    • Comprehensive test results that demonstrate the fix working and not breaking existing workflows.
    • Why we must have it for V1 launch.
    • What workarounds and alternative we have if we do not push the PR.
    cla-signed 
    opened by zihaoccc 72
  • build(deps): bump ssri from 6.0.1 to 6.0.2 in /developers.diem.com

    build(deps): bump ssri from 6.0.1 to 6.0.2 in /developers.diem.com

    Bumps ssri from 6.0.1 to 6.0.2.

    Changelog

    Sourced from ssri's changelog.

    6.0.2 (2021-04-07)

    Bug Fixes

    • backport regex change from 8.0.1 (b30dfdb), closes #19

    Commits
    Maintainer changes

    This version was pushed to npm by nlf, a new releaser for ssri since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    cla-signed dependencies javascript 
    opened by dependabot[bot] 70
  • [Forge] Add forge LBT in ci-test

    [Forge] Add forge LBT in ci-test

    Motivation

    (Write your motivation for proposed changes here.)

    Have you read the Contributing Guidelines on pull requests?

    (Write your answer here.)

    Test Plan

    (Share your test plan here. If you changed code, please provide us with clear instructions for verifying that your changes work.)

    Related PRs

    (If this PR adds or changes functionality, please take some time to update or suggest changes to the docs at https://developers.diem.com, and link to your PR here.)

    If targeting a release branch, please fill the below out as well

    • Justification and breaking nature (who does it affect? validators, full nodes, tooling, operators, AOS, etc.)
    • Comprehensive test results that demonstrate the fix working and not breaking existing workflows.
    • Why we must have it for V1 launch.
    • What workarounds and alternative we have if we do not push the PR.
    cla-signed 
    opened by zihaoccc 67
  • [language] Binary format changes

    [language] Binary format changes

    Here are the changes to the binary format. We have few things missing around Scripts vs Modules and around functions (native function flags and function signatures). However this works and it's the bulk of the changes. There is more to clean up and correct but this needs to go in asap and we can all iterate over

    breaking cla-signed 
    opened by dariorussi-zz 66
  • [bytecode-verifier] Implement phantom params in bytecode

    [bytecode-verifier] Implement phantom params in bytecode

    This PR implements phantom type parameters in the bytecode. A type argument instantiating a phantom type parameter is not considered when deriving the abilities for the struct instantiation. For this to be sound, in a struct declaration a phantom type parameter can only appear in phantom position (or not appear at all), i.e., as an argument to a phantom type parameter.

    Motivation

    Avoid spurious ability annotations for marker types like XUS.

    Have you read the Contributing Guidelines on pull requests?

    Yes

    Test Plan

    Tests will be coming in the next PR.

    cla-signed bors-high-priority 
    opened by nilehmann 56
  • Rename all the things from libra to diem

    Rename all the things from libra to diem

    Renames all occurrences of "libra" with "diem" (with casing preserved). Renames all occurrences of "lbr" with "XDX" (with casing preserved). Renames all occurences of "coin1" to "XUS" (with casing preserved).

    This PR is meant to be the bulk renaming, there will need to be smaller cleanup passes that we will want to do afterwards, but that can be done by folks in each area.

    breaking tcb-deps-changed deps-changed bors-high-priority 
    opened by tzakian 55
  • [move] Unify source maps to operate upon Loc locations #9022 - (107)

    [move] Unify source maps to operate upon Loc locations #9022 - (107)

    Motivation

    Many types in the Move codebase are defined to operate upon a generic "source location" type, in order to operate on both OwnedLoc (a source location type that stores its file field as a String), and on Loc (a source location type that used to store its file field as a &str reference, and now stores it as a globally interned string Symbol).

    Remove OwnedLoc, since it no longer provides functionality that differs from Loc. This allows the generic source map types to be transformed to simpler, concrete types.

    In addition, helper functions implemented to map between types that use OwnedLoc and those that use Loc can also be deleted.

    Test Plan

    • CI/CD tests are covered
    opened by ankitkacn 0
  • [move-lang] Check usage of non-phantom parameters-(106)

    [move-lang] Check usage of non-phantom parameters-(106)

    Add check to warn on unexpected behavior of non-phantom types.

    • Non-phantom types parameters should be used at least once.
    • Non-phantom types parameters shouldn't be used in phantom position.

    Motivation

    Any parameter not satisfying the above restrictions should be declared as phantom.

    Test Plan

    Checking the code in diem-framework and stdlib shouldn't raise any warning.

    opened by vikalpacn 5
  • [State Sync] Rename state sync v1 crate and add a skeleton crate for v2-(103)

    [State Sync] Rename state sync v1 crate and add a skeleton crate for v2-(103)

    Motivation

    To make way for state sync v2 development and deployment, this PR offers two commits:

    1. Rename the current state-sync crate to state-sync-v1 and move it into its own directory: state-sync/state-sync-v1).
    2. Create a new skeleton crate state-sync-v2 that lives in state-sync/state-sync-v2.

    Other than modifications to the README files (e.g., adding a disclaimer), nothing changes logically.

    Have you read the Contributing Guidelines on pull requests?

    Yes.

    Test Plan

    None required -- existing tests will catch issues.

    Related PRs

    None, but this PR relates to: https://github.com/diem/diem/issues/8906

    opened by vikalpacn 5
  • [move-prover] record directly used memory and handle extra bytecode #9019 - (102)

    [move-prover] record directly used memory and handle extra bytecode #9019 - (102)

    Motivation

    There are two changes in the first commit:

    1/ Current usage_analysis only records all (directly + transitively) used memory in a function, this commit additionally record the directly accessed memory into a separate set, in a similar spirit to how the modified / directly-modified sets are currently differentiated. This information will be useful later when we calculate how to defer invariants from a callee to its caller (by enlarging the set that represents callers' directly-accessed memory).

    2/ Several bytecode that has a memory accessing/modifying semantic are not included in the analysis, namely OpaqueCallBegin/End and WriteBack to a GlobalRoot.

    Not covering WriteBack is hardly an issue because we would not expect a WriteBack to a GlobalRoot without a BorrowGlobal somewhere, and the memory usage/modification info should already be captured in the BorrowGlobal instruction. Nevertheless, it does not hurt to re-add the same info again. Memory accesses in opaque functions are not captured previously which seems a bit weird. At least from the global invariant point of view, if a global invariant is applicable in an opaque function and that opaque function happens to defer the invariants to its caller, we should at least know which memories are accessed by the callee function in order to determine which invariants are applicable. The second commit adds memories mentioned in the assume and assert expressions to their respective sets as well.

    The second commit also refactored the data structure behind the scene. The high-level structure include memory

    • accessed
    • modified
    • assumed
    • asserted

    in a function. And each field has a direct / transitive field to annotate whether the memory is directly related to the function or transitively related.

    Have you read the Contributing Guidelines on pull requests? Yes

    Test Plan

    CI/CD tests are covered

    opened by ankitkacn 5
  • [diem-framework] Send NetworkIdentity events to a central event stream (100)

    [diem-framework] Send NetworkIdentity events to a central event stream (100)

    Motivation

    Send NetworkIdentity events to a central event stream

    Test Plan

    • cargo test --package diem-framework --tests

    • cargo test --package move-lang-functional-tests --tests

    opened by rutkaracn 7
  • Bump actions/cache from 2.1.6 to 3.2.1

    Bump actions/cache from 2.1.6 to 3.2.1

    Bumps actions/cache from 2.1.6 to 3.2.1.

    Release notes

    Sourced from actions/cache's releases.

    v3.2.1

    What's Changed

    Full Changelog: https://github.com/actions/cache/compare/v3.2.0...v3.2.1

    v3.2.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/cache/compare/v3...v3.2.0

    v3.2.0-beta.1

    What's Changed

    v3.1.0-beta.3

    What's Changed

    • Bug fixes for bsdtar fallback, if gnutar not available, and gzip fallback, if cache saved using old cache action, on windows.

    Full Changelog: https://github.com/actions/cache/compare/v3.1.0-beta.2...v3.1.0-beta.3

    ... (truncated)

    Changelog

    Sourced from actions/cache's changelog.

    3.2.1

    • Update @actions/cache on windows to use gnu tar and zstd by default and fallback to bsdtar and zstd if gnu tar is not available. (issue)
    • Added support for fallback to gzip to restore old caches on windows.
    • Added logs for cache version in case of a cache miss.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
Releases(diem-core-v1.4.3)
  • diem-core-v1.4.3(Sep 2, 2022)

    Minor release- upgrades Rust toolchain to 1.63.0 and the following crates for security: nix to ^0.20.2 rocksdb to 0.17.0 regex to 1.5.5 thread_local to 1.1.4 tokio to 1.18.2 zeroize to 1.3.0 zeroize_derive to 1.1.1

    Source code(tar.gz)
    Source code(zip)
The Nervos CKB is a public permissionless blockchain, and the layer 1 of Nervos network.

Nervos CKB - The Common Knowledge Base master develop About CKB CKB is the layer 1 of Nervos Network, a public/permissionless blockchain. CKB uses Pro

Nervos Network 1k Dec 31, 2022
The Phala Network Blockchain, pRuntime and the bridge.

Phala Blockchain Phala Network is a TEE-Blockchain hybrid architecture implementing Confidential Contract. This repo includes: node/: the main blockch

Phala Network 313 Dec 20, 2022
IBC modules and relayer - Formal specifications and Rust implementation

ibc-rs Rust implementation of the Inter-Blockchain Communication (IBC) protocol. This project comprises primarily four crates: The ibc crate defines t

Informal Systems 296 Jan 4, 2023
The new, performant, and simplified version of Holochain on Rust (sometimes called Holochain RSM for Refactored State Model)

Holochain License: This repository contains the core Holochain libraries and binaries. This is the most recent and well maintained version of Holochai

Holochain 737 Dec 28, 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 Dec 28, 2022
rage is a simple, modern, and secure file encryption tool, using the age format

A simple, secure and modern encryption tool (and Rust library) with small explicit keys, no config options, and UNIX-style composability.

null 1.7k Jan 2, 2023
Diem’s mission is to build a trusted and innovative financial network that empowers people and businesses around the world.

Note to readers: On December 1, 2020, the Libra Association was renamed to Diem Association. The project repos are in the process of being migrated. A

Diem 16.7k Dec 29, 2022
Diem’s mission is to build a trusted and innovative financial network that empowers people and businesses around the world.

Note to readers: On December 1, 2020, the Libra Association was renamed to Diem Association. The project repos are in the process of being migrated. A

Diem 16.7k Jan 9, 2023
cashio is a decentralized stablecoin made for the people, by the people.

cashio is a decentralized stablecoin made for the people, by the people. We're in active development. For the latest updates, please join our c

Cashio App 42 Sep 29, 2022
Engula empowers engineers to build reliable and cost-effective databases.

Engula is a storage engine that empowers engineers to build reliable and cost-effective databases with less effort and more confidence. Engula is in t

Engula 706 Jan 1, 2023
Test Electronic Control Units around the world in a transparent network.

Eclipse openDuT Test Electronic Control Units around the world in a transparent network. Eclipse openDuT provides an open framework to automate the te

Eclipse openDuT 6 Dec 22, 2023
An easily deployable service to monitor mission-critical SPL token accounts

Vault watcher Monitoring critical spl-token accounts in real time Table of contents Introduction Usage Configuration Configuration examples Grafana In

null 21 Nov 29, 2022
Rust on ESP32 STD "Hello, World" app. A "Hello, world!" STD binary crate for the ESP32[XX] and ESP-IDF.

Rust on ESP32 STD "Hello, World" app A "Hello, world!" STD binary crate for the ESP32[XX] and ESP-IDF. This is the crate you get when running cargo ne

Ivan Markov 138 Jan 1, 2023
ARM TrustZone-M example application in Rust, both secure world side and non-secure world side

ARM TrustZone-M example application in Rust, both secure world side and non-secure world side; projects are modified from generated result of cortex-m-quickstart.

null 44 Dec 4, 2022
Rust implementation of Another World (aka Out of this world) game engine

RustyWorld Rust implementation of Another World (aka Out of this world) game engine. I wanted a fun project to challenge myself while learning Rust, a

Francesco Degrassi 3 Jul 1, 2021
Enigma Core library. The domain: Trusted and Untrusted App in Rust.

Enigma Core library Service Master Develop CI Badge Pure Rust Enclave && Untrusted in Rust. Core is part of the Enigma node software stack. The Core c

SCRT Labs 89 Sep 14, 2022
plugy empowers you to construct agnostic dynamic plugin systems using Rust and WebAssembly.

plugy plugy is a plugin system designed to enable the seamless integration of Rust-based plugins into your application. It provides a runtime environm

Geoffrey Mureithi 22 Aug 12, 2023
A simple-to-use input manager for the Bevy game engine that empowers players and makes accessibility easy.

Bevy Ineffable A simple-to-use input manager for the Bevy game engine that empowers players and makes accessibility easy. Core tenets Make accessibili

Jazarro 10 Mar 2, 2024
Nova: Recursive SNARKs without trusted setup

Nova: Recursive SNARKs without trusted setup Nova is a high-speed recursive SNARK (a SNARK is type cryptographic proof system that enables a prover to

Microsoft 219 Jan 1, 2023
Spartan: High-speed zkSNARKs without trusted setup

Spartan: High-speed zkSNARKs without trusted setup Spartan is a high-speed zero-knowledge proof system, a cryptographic primitive that enables a prove

Microsoft 435 Jan 4, 2023