• This repository has been archived on 11/Mar/2024
  • Stars
    star
    319
  • Rank 130,739 (Top 3 %)
  • Language
    Rust
  • License
    Apache License 2.0
  • Created almost 6 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Hyperledger Ursa (a shared cryptographic library) has moved to end-of-life status, with the components of Ursa still in use moved to their relevant Hyperledger projects (AnonCreds, Indy, Aries and Iroha).

HYPERLEDGER URSA

Hyperledger Ursa was moved to EOL at the TOC meeting on 27 APR 2023.

The components of Ursa that are still in active use are moved to their respective projects where they will continue to be maintained, including:

  • CL Signatures to AnonCreds
  • BBS+ Signatures to Aries
  • BLS Signatures to Indy

The published Ursa crates remain available for those projects already using them.

Introduction

Ursa was created because people in the Hyperledger community realized that it would save time and effort and improve security if we all collaborated on our cryptographic code. Since cryptographic APIs are relatively straightforward to define, it would be possible for many different projects to utilize the same code without too much difficulty.

First and foremost, we hope in the long run that Ursa provides open-source blockchain developers with reliable, secure, easy-to-use, and pluggable cryptographic implementations.

Features

The major artifacts of Ursa are:

  • C-callable library interface
  • Rust crate

Ursa is divided into two sub libraries: libursa and libzmix.

Libursa

Designed for cryptographic primitives like simple digital signatures, encryption schemes, and key exchange.

Supported Signatures

  • ECDSA
    • Secp256k1
  • EdDSA
    • Ed25519 (Curve25519 in Twisted Edwards Form)
  • Boneh Lynn Shacham (BLS) Signature
    • Any Pairing friendly curves
  • Camenisch Lysyanskaya
    • RSA based
  • Shamir Secret Sharing

Supported Key Agreement

  • ECDH
    • Secp256k1
    • X25519 (Curve25519 in Montgomery Form)

Symmetric Encryption

  • AES-CBC
  • AES-GCM
  • XCHACHA20-POLY1305

Libzmix

A generic way to create zero-knowledge proofs, proving statements about multiple cryptographic building blocks, containing signatures, commitments, and verifiable encryption. Libzmix uses many of the building blocks found in Libursa.

Supported Zero Knowledge Proof capabilities

  • Signature Proofs of Knowledge
  • Bulletproofs
  • Range proofs
  • Set Membership

Supported Signatures

  • Boneh Boyen Shacham (BBS+)
    • Any Pairing friendly curves
  • Pointcheval Saunders
    • Any pairing friendly curves
  • Groth
    • Any Pairing friendly curves

Dependencies

Ursa uses the following external dependencies:

These dependencies are used when building in the default secure mode. These libraries are widely known. There is a goal to be able to compile Ursa from rust only code for portability reasons like generating web assemblies without the worry of compatibility issues from C code. For this reason, Ursa can be compiled with portable mode which replaces any external libraries with rust compatible code. Ursa developers take care when choosing suitable replacements that are cryptographically safe to use but may not have been audited and vetted in a similar manner to these external libraries. Ursa consumers should note this when using portable mode for their applications.

Building from Source

Please see the following document for platform-specific installations here.

Libursa

Libursa uses the rustc compiler with cargo. Go into the libursa folder where the Cargo.toml lives. Run the following commands to get the default secure mode:

cargo build --release

Run the following commands to build in portable mode:

cargo build --release --no-default-features --features=portable

If you wish to take advantage of assembly level features, you can build Ursa using the nightly compiler of rust.

cargo build --release --no-default-features --features=asm

The resulting artifact(s) can be found in the target/release folder. They include:

libursa.so (Linux)
libursa.dylib (Mac OS X)
libursa.a (Linux, Mac OS X)
libursa.dll (Windows)
libursa.lib (Windows)

Packaging

Libursa can be packaged for debian builds using cargo-deb. To create a debian package, run the following command with cargo-deb installed

cargo deb -p ursa

Libursa Documentation

Libursa API documentation is now available as rust doc in code. See:

Libzmix

Libzmix uses the rustc compiler with cargo. Go into the libzmix folder where the Cargo.toml lives. Run the following commands to get the default secure mode:

cargo build --release

Run the following commands to build in portable mode:

cargo build --release --no-default-features --features=portable

If you wish to take advantage of assembly level features, you can build ZMix using the nightly compiler of rust.

cargo build --release --no-default-features --features=asm

The resulting artifact(s) can be found in the target/release folder. They include:

libzmix.so (Linux)
libzmix.dylib (Mac OS X)
libzmix.a (Linux, Mac OS X)
libzmix.dll (Windows)
libzmix.lib (Windows)

Contributing

All bugs, stories, and backlog for this project are managed through Hyperledger's Jira in project IS (note that regular Ursa tickets are in the URSA project).

Also, join us on Hyperledger Rocket.Chat at #ursa to discuss.

The ursa group also meets biweekly on Wednesday's at 7 AM PST at https://zoom.us/my/hyperledger.community. The meeting notes are available here.

Major modifications to ursa are submitted as RFCs to the Ursa RFC repo.

For more details on contributing see CONTRIBUTING

More Repositories

1

composer

⚠️ ⚠️ ⚠️ Hyperledger Composer has been deprecated ⚠️ ⚠️ ⚠️
JavaScript
1,629
star
2

sawtooth-core

Core repository for Sawtooth Distributed Ledger
Python
1,424
star
3

fabric

THIS IS A READ-ONLY historic repository. Current development is at https://gerrit.hyperledger.org/r/#/admin/projects/fabric . pull requests not accepted
Go
1,168
star
4

burrow

https://wiki.hyperledger.org/display/burrow
Go
1,027
star
5

iroha

Iroha - A simple, decentralized ledger
C++
989
star
6

indy-sdk

indy-sdk
Rust
669
star
7

education

Hyperledger training material
JavaScript
372
star
8

sawtooth-supply-chain

Sawtooth Supply Chain
JavaScript
261
star
9

aries-framework-go

Hyperledger Aries Framework Go provides packages for building Agent / DIDComm services.
Go
240
star
10

composer-sample-networks

⚠️ ⚠️ ⚠️ Hyperledger Composer has been deprecated ⚠️ ⚠️ ⚠️
JavaScript
222
star
11

quilt

Hyperledger Quilt - An implementation of the Interledger Protocol
Java
219
star
12

grid

Grid has moved to end-of-life status.
Rust
208
star
13

fabric-chaincode-evm

Go
175
star
14

avalon

Hyperledger Avalon enables privacy in blockchain transactions, moving intensive processing from a main blockchain to improve scalability and latency, and to support attested Oracles
Python
136
star
15

iroha-android

Android library for Iroha, a Distributed Ledger Technology (blockchain) platform.
Java
107
star
16

composer-sample-applications

⚠️ ⚠️ ⚠️ Hyperledger Composer has been deprecated ⚠️ ⚠️ ⚠️
JavaScript
105
star
17

education-cryptomoji

JavaScript
97
star
18

fabric-chaintool

Clojure
91
star
19

sawtooth-next-directory

HTML
87
star
20

aries-framework-dotnet

Aries Framework .NET for building multiplatform SSI services
C#
84
star
21

sawtooth-marketplace

Python
84
star
22

fabric-sdk-rest

Read-only mirror of https://gerrit.hyperledger.org/r/#/admin/projects/fabric-sdk-rest
JavaScript
79
star
23

sawtooth-pbft

Sawtooth PBFT consensus engine
Rust
76
star
24

composer-tools

⚠️ ⚠️ ⚠️ Hyperledger Composer has been deprecated ⚠️ ⚠️ ⚠️
JavaScript
74
star
25

caliper

A blockchain benchmark framework to measure performance of multiple blockchain solutions
JavaScript
74
star
26

sawtooth-seth

Rust
73
star
27

transact

Transact is a transaction execution platform designed to be used as a library or component when implementing distributed ledgers, including blockchains.
Rust
66
star
28

fabric-baseimage

Deprecated Fabric Base Images
Shell
54
star
29

sawtooth-sabre

Sawtooth Sabre (WASM Smart Contracts)
Rust
52
star
30

education-sawtooth-simple-supply

Python
51
star
31

fabric-api-archive

Read-only mirror of https://gerrit.hyperledger.org/r/#/admin/projects/fabric-api
Java
49
star
32

indy-crypto

Archive of Indy Crypto library. Superseded by the Hyperledger Ursa Project.
Rust
49
star
33

aries-toolbox

Hyperledger Aries
Vue
43
star
34

indy-agent

Archive of Indy Reference Agents and Tools. Superseded by the Hyperledger Aries Project.
Python
43
star
35

composer-knowledge-wiki

⚠️ ⚠️ ⚠️ Hyperledger Composer has been deprecated ⚠️ ⚠️ ⚠️
40
star
36

aries-mobile-agent-xamarin

C#
39
star
37

fabric-chaintool-original

THIS IS A READ-ONLY historic repository. Current development is at https://gerrit.hyperledger.org/r/#/admin/projects/fabric-chaintool . pull requests not accepted
Clojure
38
star
38

sawtooth-explorer

TypeScript
37
star
39

iroha-dotnet

.NET library for Hyperledger Iroha, a simple distributed ledger.
C++
32
star
40

iroha-api

Iroha API
HTML
32
star
41

fabric-api

Read-only historic repo. Current development is at https://gerrit.hyperledger.org/r/#/admin/projects/fabric-api . pull requests not accepted
Java
32
star
42

sawtooth-sdk-javascript

JavaScript
30
star
43

composer-sample-models

⚠️ ⚠️ ⚠️ Hyperledger Composer has been deprecated ⚠️ ⚠️ ⚠️
JavaScript
29
star
44

hyperledgerwp

Hyperledger Whitepaper
TeX
28
star
45

sawtooth-sdk-go

Go
28
star
46

iroha-scala

Scala library for Hyperledger Iroha, a simple distributed ledger. http://iroha.tech
Scala
28
star
47

composer-vscode-plugin

⚠️ ⚠️ ⚠️ Hyperledger Composer has been deprecated ⚠️ ⚠️ ⚠️
TypeScript
27
star
48

sawtooth-sdk-rust

Rust
27
star
49

aries-protocol-test-suite

Test Suite for testing protocol compliance of Aries Agents
Python
26
star
50

sawtooth-raft

Rust
26
star
51

aries-acapy-plugin-toolbox

Hyperledger Aries
Python
24
star
52

indy-anoncreds

Python
24
star
53

sawtooth-rfcs

22
star
54

indy-sdk-react-native

React Native wrapper around Indy SDK Java and Objective-C wrappers.
Java
22
star
55

ci-management

Read-only mirror of https://gerrit.hyperledger.org/r/#/admin/projects/ci-management
Shell
20
star
56

sawtooth-sdk-java

Java
19
star
57

indy-client

Sovrin client
Python
18
star
58

aries-cloudagent-loadgenerator

aries-cloudagent-loadgenerator
Kotlin
17
star
59

grid-contrib

Grid has moved to end-of-life status.
JavaScript
17
star
60

sawtooth-sdk-python

Python
17
star
61

iroha-ametsuchi

Flatbuffer database for the Hyperledger Iroha project.
C++
15
star
62

aries-framework-go-ext

Go
14
star
63

ursa-rfcs

Hyperledger Ursa has moved to end-of-life status.
TeX
13
star
64

composer-atom-plugin

⚠️ ⚠️ ⚠️ Hyperledger Composer has been deprecated ⚠️ ⚠️ ⚠️
CoffeeScript
12
star
65

fabric-cop

This is a read-only mirror of https://gerrit.hyperledger.org/r/#/admin/projects/fabric-cop no pull requests accepted
Go
12
star
66

aries-sdk-javascript

C++
12
star
67

sawtooth-private-utxo

11
star
68

sawtooth-sdk-dotnet

C#
11
star
69

ursa-wrapper-go

Hyperledger Ursa has moved to end-of-life status.
Go
11
star
70

indy-common

Common utility functions for other sovrin repos (like sovrin-client, sovrin-node etc)
Python
10
star
71

sawtooth-docs

Documentation source for Sawtooth Lake. Published docs at the link.
Python
10
star
72

iroha-docker

Dockerfiles for Iroha
Shell
10
star
73

sawtooth-poet

Python
9
star
74

grid-rfcs

Grid has moved to end-of-life status.
8
star
75

cello-analytics

Shell
8
star
76

sawtooth-mktplace

Example trading system for Sawtooth Lake distributed ledger.
Python
8
star
77

sawtooth-sdk-swift

Sawtooth SDK Swift
Swift
8
star
78

indy-ledger

Python
8
star
79

sawtooth-validator

This repo builds a validator (miner) for the Sawtooth Lake ledger. Docs at the link:
Python
7
star
80

iroha-network-tools

Network tools for Hyperledger Iroha
7
star
81

smart-contracts-wg

Repository for HL Smart Contracts Working Group working products
7
star
82

aries-sdk-java

Java
7
star
83

learning-materials-dev

https://wiki.hyperledger.org/display/LMDWG
Shell
7
star
84

sawtooth-arcade

Example transaction families for Sawtooth Lake distributed ledger.
Python
7
star
85

sawtooth-lib

Rust
6
star
86

sawtooth-dev-tools

Development environment and tools for Sawtooth Lake distributed ledger.
Shell
6
star
87

fabric-test-resources-gerrit

READ ONLY MIRROR of https://gerrit.hyperledger.org/r/#/admin/projects/fabric-test-resources NO PULL REQUESTS
Java
6
star
88

transact-contrib

5
star
89

homebrew-fabric

Ruby
5
star
90

sawtooth-devmode

Simple consensus engine for Hyperledger Sawtooth for developers
Python
5
star
91

sawtooth-ansible

5
star
92

aries-sdk-ruby

Rust
5
star
93

composer-sample-applications-hlfv1

Sample applications for Composer (with Fabric v1.0 support)
JavaScript
5
star
94

sawtooth-sdk-cxx

C++
4
star
95

sawtooth-docs-archive

Source files for the Hyperledger Sawtooth website
HTML
4
star
96

IDWG

All resources related to the Identity Working Group in Hyperledger
4
star
97

fabric-docs

Read-only mirror of https://gerrit.hyperledger.org/r/#/admin/projects/fabric-docs
4
star
98

transact-rfcs

3
star
99

fabric-gerrit

JavaScript
3
star
100

tf-security

Documentation and other things for the security task force.
TeX
3
star