Git Product home page Git Product logo

webankblockchain / wedpr-lab-core Goto Github PK

View Code? Open in Web Editor NEW
168.0 10.0 34.0 505 KB

Core libraries of WeDPR instant scenario-focused solutions for privacy-inspired business; WeDPR即时可用场景式隐私保护高效解决方案核心算法组件

License: Apache License 2.0

Rust 100.00%
wedpr blockchain privacy zkp mpc crypto cryptography homomorphic-encryption multiparty-computation rust sdk-rust

wedpr-lab-core's Introduction

项目背景

WeDPR

WeDPR是一系列即时可用场景式隐私保护高效解决方案套件和服务(参见WeDPR白皮书),由微众银行区块链团队自主研发。方案致力于解决业务数字化中隐私不“隐”、共享协作不可控等隐私保护风险痛点,消除隐私主体的隐私顾虑和业务创新的合规壁垒,助力基于隐私数据的核心价值互联和新兴商业探索,营造公平、对等、共赢的多方数据协作环境,达成数据价值跨主体融合和数据治理的可控平衡。

WeDPR具备以下特色和优势:

  • 场景式解决方案:已基于具有共性的场景需求,提炼出公开可验证密文账本、多方密文决策、多方密文排名、多方密文计算、多方安全随机数生成、选择性密文披露等高效技术方案框架模板,可应用于支付、供应链金融、跨境金融、投票、选举、榜单、竞拍、招标、摇号、抽检、审计、隐私数据聚合分析、数字化身份、数字化资质凭证、智慧城市、智慧医疗等广泛业务场景。
  • 即时可用:高性能、高易用、跨平台跨语言实现、不依赖中心化可信服务、不依赖可信硬件、支持国密算法标准、隐私效果公开可验证,5分钟一键构建示例应用。
  • 透明可控:隐私控制回归属主,杜绝数据未授权使用,在『数据可用而不可见』的基础上,进一步实现数据使用全程可监管、可追溯、可验证。

WeDPR全面拥抱开放,将陆续开源一系列核心算法组件,进一步提升系统安全性的透明度,提供更透明、更可信的隐私保护效果。WeDPR-Lab就是这一系列开源的核心算法组件的集合。

WeDPR-Lab-Core v1.5.0版本开源主要内容如下:

  • 多方密文决策ACV核心算法,支持全密文决策、全流程可验证的多方隐私决策。

  • ACV场景式解决方案的一个交互式样例,实现以下主要功能:

    • 密文空白选票的颁发

    • 决策密文选票的生成

    • 密文决策过程的零知识证明生成与验证

    • 密文决策结果的汇总

    • 汇总过程的零知识证明生成和验证

    • 决策结果的验证

  • Rust SDK,封装底层算法,提供易用、易扩展、跨语言的编程接口;

  • 其他基础工具代码。

WeDPR-Lab-Core v1.4.0版本开源主要内容如下:

  • 将WeDPR-Lab Crypto v1.1.0新增的零知识证明的聚合验证算法运用于VCL公开可验证密文账本。

  • 聚合验证算法在VCL中应用后的具体效果是:

对于多组密文记录及其加和关系证明(或乘积关系证明),无需针对每个加和证明(或乘积证明)分别进行验证,而只需执行一次聚合验证,就可对所有加和证明(或乘积证明)进行验证。

聚合验证算法通过减少开销较大的椭圆曲线点运算的个数,将VCL中对应零知识证明批量验证的效率提升了近60%。

WeDPR-Lab-Core v1.3.0版本开源主要内容如下:

  • 密钥生成及管理的核心算法,包括:

    • 密钥助记词的生成

    • 基于助记词的密钥生成

    • 基于分层结构的密钥派生

  • Rust SDK,封装底层算法,提供易用、易扩展、跨语言的编程接口;

  • FFI接口,支持交叉编译跨语言、跨平台所调用的FFI适配接口;

  • 其他基础工具代码。

WeDPR-Lab-Core v1.2.0版本开源主要内容如下:

  • 选择性认证披露SCD核心算法,支持多种断言证明的高效稳定实现;

  • SCD场景式解决方案的一个交互式样例,实现以下主要功能:

    • 选择性披露证书颁发

    • 零知识断言披露证明

    • 零知识断言披露验证

    • 选择性属性明文披露和验证

  • Rust SDK,封装底层算法,提供易用、易扩展、跨语言的编程接口;

  • FFI接口,支持交叉编译跨语言、跨平台所调用的FFI适配接口;

  • 其他基础工具代码。

WeDPR-Lab-Core v1.1.0版本开源主要内容如下:

提供更为丰富的密码学算法组件,具体包括:

  • 密码算法组件

    • 签名验证

    • 哈希算法

    • 公钥加解密ECIES

  • FFI接口,新增支持交叉编译、跨语言、跨平台所调用的FFI适配接口。

WeDPR-Lab-Core v1.0.0版本开源主要内容如下:

  • 公开可验证密文账本VCL的一个交互式样例,实现以下主要功能:

    • 密文金额发行

    • 密文金额四则运算关系验证

    • 密文金额范围验证

  • 三类零知识证明算法的高效稳定实现,包括

    • 密文加和关系证明

    • 密文乘积关系证明

    • 密文范围证明

  • Rust SDK,封装底层算法,提供易用、易扩展、跨语言的编程接口;

  • FFI接口,支持交叉编译跨语言、跨平台所调用的FFI适配接口;

  • 其他基础工具代码。

我们期望能够通过代码开源的方式:

  • 有效降低使用隐私保护算法组件的技术门槛;
  • 减少业务系统集成隐私保护特性的开发成本;
  • 助力全行业伙伴安全、合规地开展数据业务。

欢迎社区伙伴参与WeDPR-Lab的共建,一起为可信开放数字新生态的构建打造坚实、可靠的技术底座。

安装

安装Rust环境

安装nightly版本的Rust开发环境,可参考Rust官方文档

下载WeDPR-Lab源代码

使用git命令行工具,执行如下命令。

git clone https://github.com/WeBankBlockchain/WeDPR-Lab-Core.git

接口文档

生成并查看Rust SDK接口文档

在本项目的根目录(即WeDPR-Lab-Core目录)中,运行如下命令。

cargo doc --no-deps

以上命令将根据代码中的注释,在target/doc子目录中,生成的SDK接口文档。

进入target/doc文档目录后,会看到所有SDK相关的包名(包含WeDPR-Lab和其他依赖包),进入其中任意一个包名的目录,用网页浏览器打开其中的index.html文件,便可查看WeDPR-Lab相关的接口说明。

其他相关文档

项目贡献

wedpr-lab-core's People

Contributors

cyjseagull avatar fqliao avatar haoxuan40404 avatar julyawang avatar piggypiggy avatar qyan-dev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wedpr-lab-core's Issues

Build failed

Thanks for developers in this project.
When I am running cargo run , the terminal returned this :
Checking synstructure v0.12.4 error[E0554]:#![feature]` may not be used on the stable release channel
--> /home/yidian/.cargo/registry/src/github.com-1ecc6299db9ec823/bulletproofs-1.0.4/src/lib.rs:1:1
|
1 | #![feature(nll)]
| ^^^^^^^^^^^^^^^^

error[E0554]: #![feature] may not be used on the stable release channel
--> /home/yidian/.cargo/registry/src/github.com-1ecc6299db9ec823/bulletproofs-1.0.4/src/lib.rs:2:1
|
2 | #![feature(external_doc)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0554]: #![feature] may not be used on the stable release channel
--> /home/yidian/.cargo/registry/src/github.com-1ecc6299db9ec823/bulletproofs-1.0.4/src/lib.rs:3:1
|
3 | #![feature(try_trait)]
| ^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 3 previous errors

For more information about this error, try rustc --explain E0554.
error: could not compile bulletproofs.

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: build failed
`

Is there any version requirement of Rust? I have used rustc --version rustc 1.46.0 (04488afe3 2020-08-24) How do I solve it.

'cargo run' compile failed

Informations

Compiling subtle v2.3.0
   Compiling gimli v0.22.0
   Compiling object v0.20.0
   Compiling remove_dir_all v0.5.3
error[E0658]: use of unstable library feature 'alloc': this library is unlikely to be stabilized in its current form or name (see issue #27783)
  --> /Users/liaohua/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/object-0.20.0/src/lib.rs:18:1
   |
18 | extern crate alloc;
   | ^^^^^^^^^^^^^^^^^^^
   |
   = help: add #![feature(alloc)] to the crate attributes to enable

   Compiling opaque-debug v0.2.3
   Compiling keccak v0.1.0
error[E0658]: use of unstable library feature 'alloc': this library is unlikely to be stabilized in its current form or name (see issue #27783)
  --> /Users/liaohua/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/gimli-0.22.0/src/lib.rs:41:1
   |
41 | extern crate alloc;
   | ^^^^^^^^^^^^^^^^^^^
   |
   = help: add #![feature(alloc)] to the crate attributes to enable

error[E0658]: use of unstable library feature 'maybe_uninit' (see issue #53491)
 --> /Users/liaohua/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/gimli-0.22.0/src/read/cfi.rs:5:23
  |
5 | use core::mem::{self, MaybeUninit};
  |                       ^^^^^^^^^^^
  |
  = help: add #![feature(maybe_uninit)] to the crate attributes to enable

error[E0658]: use of unstable library feature 'maybe_uninit' (see issue #53491)
    --> /Users/liaohua/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/gimli-0.22.0/src/read/cfi.rs:2313:20
     |
2313 |     rules_storage: MaybeUninit<[(Register, RegisterRule<R>); MAX_RULES]>,
     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     |
     = help: add #![feature(maybe_uninit)] to the crate attributes to enable

error[E0658]: use of unstable library feature 'maybe_uninit' (see issue #53491)
    --> /Users/liaohua/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/gimli-0.22.0/src/read/cfi.rs:2330:28
     |
2330 |             rules_storage: MaybeUninit::uninit(),
     |                            ^^^^^^^^^^^^^^^^^^^
     |
     = help: add #![feature(maybe_uninit)] to the crate attributes to enable

error[E0210]: type parameter `T` must be used as the type parameter for some local type (e.g., `MyStruct<T>`)
   --> /Users/liaohua/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/subtle-2.3.0/src/lib.rs:510:1
    |
510 | impl<T> From<CtOption<T>> for Option<T> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type parameter `T` must be used as the type parameter for some local type
    |
    = note: only traits defined in the current crate can be implemented for a type parameter

error: aborting due to previous error

For more information about this error, try `rustc --explain E0210`.
error: Could not compile `subtle`.
warning: build failed, waiting for other jobs to finish...
error[E0599]: no function or associated item named `uninit` found for type `core::mem::MaybeUninit<_>` in the current scope
    --> /Users/liaohua/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/gimli-0.22.0/src/read/cfi.rs:2330:41
     |
2330 |             rules_storage: MaybeUninit::uninit(),
     |                            -------------^^^^^^
     |                            |
     |                            function or associated item not found in `core::mem::MaybeUninit<_>`

error[E0658]: use of unstable library feature 'maybe_uninit' (see issue #53491)
    --> /Users/liaohua/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/gimli-0.22.0/src/read/cfi.rs:2367:60
     |
2367 |             core::slice::from_raw_parts(self.rules_storage.as_ptr() as *const _, self.rules_len)
     |                                                            ^^^^^^
     |
     = help: add #![feature(maybe_uninit)] to the crate attributes to enable

error[E0658]: use of unstable library feature 'maybe_uninit' (see issue #53491)
    --> /Users/liaohua/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/gimli-0.22.0/src/read/cfi.rs:2375:36
     |
2375 |                 self.rules_storage.as_mut_ptr() as *mut _,
     |                                    ^^^^^^^^^^
     |
     = help: add #![feature(maybe_uninit)] to the crate attributes to enable

error[E0658]: use of unstable library feature 'maybe_uninit' (see issue #53491)
    --> /Users/liaohua/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/gimli-0.22.0/src/read/cfi.rs:2406:50
     |
2406 |                     let ptr = self.rules_storage.as_mut_ptr() as *mut (Register, RegisterRule<R>);
     |                                                  ^^^^^^^^^^
     |
     = help: add #![feature(maybe_uninit)] to the crate attributes to enable

error[E0658]: use of unstable library feature 'maybe_uninit' (see issue #53491)
    --> /Users/liaohua/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/gimli-0.22.0/src/read/cfi.rs:2447:42
     |
2447 |             let ptr = self.rules_storage.as_mut_ptr() as *mut (Register, RegisterRule<R>);
     |                                          ^^^^^^^^^^
     |
     = help: add #![feature(maybe_uninit)] to the crate attributes to enable

error[E0599]: no method named `cast` found for type `*const u8` in the current scope
  --> /Users/liaohua/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/object-0.20.0/src/pod.rs:35:30
   |
35 |     let val = unsafe { &*ptr.cast() };
   |                              ^^^^

error[E0599]: no method named `cast` found for type `*const u8` in the current scope
  --> /Users/liaohua/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/object-0.20.0/src/pod.rs:53:52
   |
53 |     let slice = unsafe { slice::from_raw_parts(ptr.cast(), count) };
   |                                                    ^^^^

error[E0599]: no method named `cast` found for type `*const T` in the current scope
  --> /Users/liaohua/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/object-0.20.0/src/pod.rs:65:66
   |
65 |     unsafe { slice::from_raw_parts(slice::from_ref(val).as_ptr().cast(), size) }
   |                                                                  ^^^^

error[E0658]: use of unstable library feature 'iter_copied' (see issue #57127)
   --> /Users/liaohua/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/object-0.20.0/src/pod.rs:291:39
    |
291 |     list.entries(bytes.iter().take(8).copied().map(DebugByte));
    |                                       ^^^^^^
    |
    = help: add #![feature(iter_copied)] to the crate attributes to enable

error: aborting due to 9 previous errors

Some errors occurred: E0599, E0658.
For more information about an error, try `rustc --explain E0599`.
error: Could not compile `gimli`.
warning: build failed, waiting for other jobs to finish...
error: aborting due to 5 previous errors

Some errors occurred: E0599, E0658.
For more information about an error, try `rustc --explain E0599`.
error: Could not compile `object`.

windows openssl compilation error

你好,请问这个能在windows下编译吗,我编译的时候出现这个问题是怎么回事呢?

error: failed to run custom build command for `openssl-sys v0.9.60`

Caused by:
  process didn't exit successfully: `D:\rust\WeDPR-Lab-Core\target\debug\build\openssl-sys-9907d4d9e796620a\build-script-main` (exit code: 101)
  --- stdout
  cargo:rustc-cfg=const_fn
  cargo:rerun-if-env-changed=X86_64_PC_WINDOWS_MSVC_OPENSSL_NO_VENDOR
  X86_64_PC_WINDOWS_MSVC_OPENSSL_NO_VENDOR unset
  cargo:rerun-if-env-changed=OPENSSL_NO_VENDOR
  OPENSSL_NO_VENDOR unset
  running "perl" "./Configure" "--prefix=D:\\rust\\WeDPR-Lab-Core\\target\\debug\\build\\openssl-sys-d00d5dea42c1c716\\out\\openssl-build\\install" "no-dso" "no-ssl3" "no-unit-test" "no-comp" "no-zlib" "no-zlib-dynamic" "no-md2" "no-rc5" "no-weak-ssl-ciphers" "no-camellia" "no-idea" "no-seed" "no-engine" "no-asm" "VC-WIN64A"

  --- stderr

"verify_product_balance" and "prove_range" in ffi_c_vcl are not seem right.

我编译了ffi_c_vcl,用Python的ctypes库调用接口,但发现有两个接口不正常。

  • verify_product_balance 只会返回失败结果。
  • prove_range 只会返回空结果。

我找不到问题在哪,所以想麻烦诸位大佬帮忙看一下。

附:
最小可复现仓库 https://gitee.com/proup/mini-showcase-of-ffi_c_vcl

例1:make_credit、prove_sum_balance、verify_sum_balance都可以正常使用,但prove_range返回的却是空结果。

请输入第一个待转换成密文凭证c1的账本金额: 200
请输入第二个待转换成密文凭证c2的账本金额: 100
请输入第三个待转换成密文凭证c3的账本金额: 300
------------------------
c1的公开凭证:CiA6zm76J0LS+5zQWct7QFF8S3jpCYz8gpyiNm7yoJURdQ==
c1的私密凭证:CMgBEiC/uDL4y2K7VmIaZEttB7Ibm77FZUjJqD4zPaj2Y7kNCw==
c2的公开凭证:CiB0am1oznpnwjbIdYZH7yLIOn7Q+YE5QDPCXKM0fFPdJQ==
c2的私密凭证:CGQSIMN2JB9VU0W5zZ21Hkyj+OCL/qF3dCgACq/kSN/mPLsD
c3的公开凭证:CiBCCxqS7B55POjF0IIyF9Vv1JvhfCUfkuggjLlwg6RwLw==
c3的私密凭证:CKwCEiC5yT2AMQxssPslqAzlXwagURSr/VWRNpNW7V3PgbYNAg==
------------------------
c1+c2=?c3的证明:CiDIcjk1m50y8UxCCgNtPhe/uz1mgST1693AscSYvYhfLxIg1IxPjaUB7HCEHfKftaDJDW7/ayFyzsJOROzS8mrnw1kaILivhrB8zadIJuWOYs7TTkCzHnmLjEk7UHSFGobnoEpnIiCdfTwUf1Zss83qheCSSTxdGM4/bWDnVsn+yNHhOA5UDiogqdTXYXhuy+0rvmdtRw+pZ2MwsYX8ojplnwZ3OvmOcw8yIOP0i6edUD7qJ/G6BtEnHJtHj9nVZz8rp9w15m7v+0ULOiBb0QPvCADgjd+03e8KY0pLzMPA8wfqS7Ehotmevr/IDEIgG3AD9x8EYknD6NUvfgjsoETGYdj/0jF5dzqHcQn/1gU=
c1+c2=?c3的验证结果:True
------------------------
c1*c2=?c3的证明:CiBmX9jJkK0LL18cbCbjLFyvocuPMxzAiEz72XfIiUNkOBIgEFh3Lp9qSkpM2+KdXzV4ytblFAkD9DsxmCgH9ERR31YaIMJxZMX9/rGnwF9Y+9K4J43EzenrhLFzOrfk+uJV62ZzIiCMhYr4hb1g+5eJ0wm6zeyF5js8WbfggqxfGcEievJvBSogRJ7llu4CwMuuVhqfF1v5Vkc9iBjU+/i9PvqZ3gII+w8yICiKiM83gTAyBKbb8A5rghvvTwwTCCtsEdIZJmc3Z3QLOiDAjBLkfNK6iRA/2O8rd7Oe1yJO1cio9RHuXh7QEUl7AEIgT6tXmiht0eRRHcF4fmgVg7Y52c5pgvwWQeha1QfGmAU=
c1*c2=?c3的验证结果:False
------------------------
c1>?0的证明:None
c1>?0的验证结果:None

例2:verify_product_balance应该返回成功结果的时候,返回的却是失败结果。

请输入第一个待转换成密文凭证c1的账本金额: 200
请输入第二个待转换成密文凭证c2的账本金额: 2
请输入第三个待转换成密文凭证c3的账本金额: 400
------------------------
c1的公开凭证:CiC8rwT/3EsxXxAbOcuf4cXg58pQeU7Pr8gzQcxcT238FA==
c1的私密凭证:CMgBEiAX3iIHZ2Thdaqb9DPvWGapOhpbdTXXnvUQaSpbKsHZAA==
c2的公开凭证:CiAMZmVOAY5vL76W21Lmbqn170moMNh/s3ISGMPpZjTCaw==
c2的私密凭证:CAISIJKSQvVK633u4SiDOpEXkKt12cRFRyAOuPi8HVnHd8wC
c3的公开凭证:CiDMDAA+oRX7Lp+EuTOJAVKVtpt4g3OdNXyFdZVJC+fCDw==
c3的私密凭证:CJADEiBIZKmxI8U+/ePfOzq5myJMsdpnQHMe10fGBknZlistDg==
------------------------
c1+c2=?c3的证明:CiBA7TDWpoVSju52ygfsuRA0I87SOXlMvt2V2DCAuAmSBhIgDG4zXnF5w/fu1/7vPWaKD5zhQXme+VkmyKoJ92+RW2UaIMIS+7i23lw5OMaYr4YpVwXr4xLDqd1BxwkkayuYxItyIiAdxJmz7qXaKzTnBHvL64vbyIeCoh7kKqxBflHzuIk9BSogCN0UC71XC3jadvaFku8xpG9Flf+gmh6OOfS6PsXDrQEyIEuHT0o/I96YssqPMbsK9qWmmIn6PPSAskBCGniFJCoCOiBmQQlpXp9maWwsouUnXM0yFuZ/psXS1CRvFUBpJxSRAEIglZN14mMP6qOJGcOKCVHnjCQMaWvCEJu4uXLRMckSfAk=
c1+c2=?c3的验证结果:False
------------------------
c1*c2=?c3的证明:CiBE5mi68cu/MRM0pVOWHq7g9aew5w80/OPzLC4DZ7/nCRIgOn+SJpDz4GMKQpmyfE7e4yG71wG553UwPDdwL+3nDUQaIIDKoQFMoUvmSPGVHGCkczVErRcuSpkIreByKildWH4HIiDITzqlg81zhtAFQE4vdDxYL2i20KBMz/j/nbnme5X3Byog6WJFp3aEY4JVjpvdTwqUU1UQyXEkoSfd55Y/ZgHoRAUyIAun09LQ4A8w1YmCN17qvggsX+73kcdhHzMnxiNOWIsEOiDCmYM4IYc3kvxEz0HQ13bpXiYIYWAiYznyUOqJH/o2DUIgSGz/5pHJSFxuV31AcLMZVJmT2xAE71efC4PkoUzP/g4=
c1*c2=?c3的验证结果:False
------------------------
c1>?0的证明:None
c1>?0的验证结果:None

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.