All Projects → snario → Zknifty

snario / Zknifty

Licence: mit
🎴Zero-knowledge non-fungible tokens on Ethereum using zk-SNARKs

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Zknifty

Subspace
Library for Reactive Dapp Development with auto syncing and caching capabilities
Stars: ✭ 57 (-3.39%)
Mutual labels:  blockchain, ethereum
Tokensale
Tokensale Best Practices for Founders
Stars: ✭ 50 (-15.25%)
Mutual labels:  blockchain, ethereum
Learn Solidity
Code base for "Learn Solidity: Programming Language for Ethereum Smart Contracts" course in Tosh Academy & Blockchain Council
Stars: ✭ 44 (-25.42%)
Mutual labels:  blockchain, ethereum
Kubereum
Kubernetes + Ethereum = Kubereum!!!
Stars: ✭ 55 (-6.78%)
Mutual labels:  blockchain, ethereum
Etherscan Ml
Python Data Science and Machine Learning Library for the Ethereum and ERC-20 Blockchain
Stars: ✭ 55 (-6.78%)
Mutual labels:  blockchain, ethereum
Zerodollarhomepage
A decentralized ad server running on the blockchain
Stars: ✭ 43 (-27.12%)
Mutual labels:  blockchain, ethereum
Ethereumbook
Mastering Ethereum, by Andreas M. Antonopoulos, Gavin Wood
Stars: ✭ 11,663 (+19667.8%)
Mutual labels:  blockchain, ethereum
Ette
EVM-based Blockchain Indexer, with historical data query & real-time notification support 😎
Stars: ✭ 37 (-37.29%)
Mutual labels:  blockchain, ethereum
Trace
Supply chain transparency platform proof-of-concept based on the Ethereum blockchain ✍️
Stars: ✭ 52 (-11.86%)
Mutual labels:  blockchain, ethereum
Remix
This has been moved to https://github.com/ethereum/remix-project
Stars: ✭ 1,063 (+1701.69%)
Mutual labels:  blockchain, ethereum
Ether sql
A python library to push ethereum blockchain data into an sql database.
Stars: ✭ 41 (-30.51%)
Mutual labels:  blockchain, ethereum
Awesome Ethereum Cn
Web3.js、Solidity、Truffle开发教程及以太坊开发资源汇总
Stars: ✭ 54 (-8.47%)
Mutual labels:  blockchain, ethereum
Smart Contracts Example
Simple example of token market. Based on blockchain technology using Ethereum platform.
Stars: ✭ 37 (-37.29%)
Mutual labels:  blockchain, ethereum
Blockchain Learning
Learn and promote blockchain together by writing
Stars: ✭ 44 (-25.42%)
Mutual labels:  blockchain, ethereum
Blockchain
区块链、交易所、币种、自媒体、高频交易策略
Stars: ✭ 37 (-37.29%)
Mutual labels:  blockchain, ethereum
Ethdroid
Easy-to-use Ethereum Geth wrapper for Android
Stars: ✭ 47 (-20.34%)
Mutual labels:  blockchain, ethereum
Etherkit
Stars: ✭ 36 (-38.98%)
Mutual labels:  blockchain, ethereum
Disperse
React/Redux dApp (decentralized app) boilerplate using Ethereum's blockchain
Stars: ✭ 36 (-38.98%)
Mutual labels:  blockchain, ethereum
Blockchainage
「区块链技术指北」相关资料。
Stars: ✭ 51 (-13.56%)
Mutual labels:  blockchain, ethereum
Udacity Blockchain Developer Nanodegree
The road so far on Udacity Blockchain Developer Nanodegree
Stars: ✭ 53 (-10.17%)
Mutual labels:  blockchain, ethereum

zknifty: Zero-knowledge transactions of non-fungible tokens on Ethereum

zknifty is an experiment in using an implementation of zero-knowledge merkle tree proofs to facilitate bulk transactions of non-fungible tokens on Ethereum. It was built as a hack at ETHBerlin. This work was strongly inspired and influenced by https://github.com/barryWhiteHat/roll_up.

How it works

Merkle trees can lead to significant data compression for smart contracts, where an entire contract state can be compressed in a single bytes32 hash on-chain. In this NFT repository, each leaf of the merkle tree represents the ID of a Non-Fungible Token and each leaf also stores the current owner of the corresponding token. This design could allow us to transfer an arbitrary number of tokens with a single transaction updating the root of the merkle tree. However, since the data composing the merkle-tree is stored off-chain, it is difficult for contracts to validate changes to the merkle tree. Here, we utilize the properties of zk-SNARKs to guarantee that the merkle tree was updated according to verify specific rules. These rules are currently as follow :

  • The actual owner of the token to be transferred signed a message
  • This message is composed of the token ID and the receiver address
  • The signature is valid (eddsa signature scheme)
  • The token transfer is reflected in the new merkle tree

The token contract will accept a new merkle root only if all the conditions above are met. This is possible by providing a zk-SNARK proof to the token contract with the new merkle root. Additional conditions are needed to make the contract secure, hence this contract is not to be used in production.


Presentation Slides : https://docs.google.com/presentation/d/1aHfaHy_FPxF0fHw-9EuCTUImhFxwRv63mDTZMPVgdg0/edit?usp=sharing

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].