GithubHelp home page GithubHelp logo

celo-proposals's Introduction

CIPs

Celo’s Improvement Proposals (CIPs) describe standards for the Celo platform, including the core protocol specifications, SDK, and contract standards. A CIP is a design document that should provide background information, a rationale for the proposal, detailed solution including technical specifications, and, if any, a list of potential risks. The proposer is responsible for soliciting community feedback and for driving consensus.

For the new CGP (Celo Governance Proposal) repository, please go to the Governance Repo

There may be instances that require both CIP and CGP, such as a change to a smart contract that requires a governance proposal to point the proxy to the new instance.

Participation in the Celo project is subject to the Code of Conduct.

Submitting CIPs

Draft all proposals following the template below and submit to the CIPs repository via a PR (pull request).

CIP template:

Please see CIPS/template.md for a template.

Finding Us and Other Contributors

For code-related questions, comments, and discussions please use the Celo Forum

celo-proposals's People

Contributors

37ng avatar aaronmgdr avatar alecps avatar anna-carroll avatar aslawson avatar carterqw2 avatar clrblmt avatar codyborn avatar devme25 avatar ewilz avatar gastonponti avatar jbsibille avatar karlb avatar kobigurk avatar martinvol avatar mcortesi avatar mkaczanowski avatar nambrot avatar palango avatar pedro-clabs avatar prestwich avatar product-matt avatar sissnad avatar timmoreton avatar tkporter avatar trianglesphere avatar viktorbunin avatar yazzyyaz avatar yorhodes avatar zviadm 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

Watchers

 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

celo-proposals's Issues

CIP 30 - BLS12-377 Precompiles - Discussions

Deployment Checklist

  • Specification
  • Implementation
    • celo-blockchain
    • gas costs
  • Testing
    • Unit tests
    • fuzzing w/ algebraic-fuzzer
  • Pre-deploy
    • Precompile Address assignment in Donut block
  • Verification
    • Run the test vectors via eth_call RPC

CIP 27 - Donut Hardfork Specification - Discussions

Donut Meta CIP Hardfork Specification Discussions.

Deployment Checklist

  • Specification
    • Select CIPs for inclusion
    • Assign precompile addresses
    • All CIPs specified
  • Implementation
    • All CIPs implemented
    • All CIP PRs merged
  • Testing
    • Unit Tests
    • Ephemeral Testnet
  • Pre-deploy
    • assign block height on each network
    • tag release
  • Verification
    • Verify All CIPs

[CIP-00xx] Standard for Injected web3 Provider

Overview

  • Standard to find out the type of web3 provider to support dapps running in web browsers

Goals

  • In the case of web DApps, you can only use DSRV Celo Extension Wallet or MetaMask Extension wallet, but a standard is required to distinguish them.
  • Through these standards, each provider can be identified and transactions can be sent to the Celo blockchain through appropriate operations.

Proposed Solution

  • Ready ethereum.isMetaMask property for MetaMask. Through this property, it can be seen that it is a provider injected in MetaMask.
  • So, it is suggested that providers injected in Celo have a property with the syntax of celo[providerName].
    • eg. Some injected provider has celo.isDesktop property. It's injected by DSRV Celo Extension wallet
    • eg. For DApp browser has celo.isMobile too

Useful Links

CIP 31 - BLS12-381 Precompiles - Discussions

Deployment Checklist

  • Specification
  • Implementation
  • Testing
    • Unit tests
    • fuzzing w/ algebraic-fuzzer
  • Pre-deploy
    • Precompile Address assignment in Donut block
  • Verification
    • Run the test vectors via eth_call RPC

Celo All-Core Devs Call 1

Celo All-Core Devs Call 1

  • When: Thursday, October 29th, 2020, 4 PM UTC/12 PM EST/9 AM PST, 90 minutes max
  • Where: Celo Zoom Event (Instructions on joining found in the calendar event below)
  • Calendar Event: Add to your calendar here
  • Focus: Activating CIP Process and Initial Talks about Celo's First Hardfork. Contracts discussions and adding Meta CIPs for activated Ethereum-based forks.

Agenda

Governance

Please post all relevant proposals below that should be discussed and evaluated

[CIP-0019] JWT signer for DID-JWT

Overview

  • Now signer interface has 4 methods (signTransaction, signPersonalMessage, getNativeKey, decrypt).
  • And add a one more signer for did-jwt.
  • Because of security, jwt signer and tx signer are using same pk. so it need store in same wallet.
  • And it's not possible with ledger-wallet
  • It's maybe very useful and strong interface for DIDs. VCs, and more. (eg. HTTP Authentication header type)
Authorization: Bearer eyJhbGciOiJIUzI1NiIXVCJ9TJV...r7E20RMHrHDcEfxjoYZgeFONFh7HgQ

Celo All-Core Devs Call 2

Celo All-Core Devs Call 2

When: Thursday, November 12th, 2020, 4 PM UTC/11 AM EST/8 AM PST, 90 minutes max
Where: Celo Zoom Event (Instructions on joining found in the calendar event below)
Calendar Event: Add to your calendar here
Focus: Reviewing Meta CIPs for Donut Hardfork, Meta CIPs for EIPs already in celo-blockchain, Review technical proposals for CIP/CGP

Agenda

Please post all relevant proposals below that should be discussed and evaluated

Celo All-Core Devs Call 3: Last Call for Donut

Celo All-Core Devs Call 3: Last Call for Donut

When: Friday, December 11th, 2020, 1 PM EST/10 AM PST, 60 minutes max
Where: Celo Zoom Event (Instructions on joining found in the calendar event below)
Calendar Event: Add to your calendar here
Focus: Finalizing Donut Meta Specification

Agenda

  • CIP 29 Make Celo More Graceful
  • CIP 27 Donut Meta CIP Discussions And Last Call

Please post all relevant proposals below that should be discussed and evaluated

Celo All-Core Dev 7

Celo All-Core Devs Call 7

All-Core-Dev-Call-end-card

Event Details

When: Thursday, April 15th, 2021, 1 PM EST/10 AM PST, 60 minutes max
Where: Celo Zoom Event
Meeting ID: 974 0848 4932
Passcode: 474576
Calendar Event: Add to your calendar here

Summary

The Celo All-Core Dev Call is the "All Hands" call for all Celo Core Developers to coordinate technical specifications and proposals and discussions to the Celo Platform.

Agenda

  • Baklava Donut Hardfork Retro, Expectations for Mainnet
  • CIP-10

Please post all relevant proposals below that should be discussed and evaluated

Celo Wallet Council Call 4

Celo Wallet Council Call 4

Wallet Council Call

Event Details

When: Wednesday, October 27th, 2021, 12 PM EST/9 AM PST, 60 minutes max
Where: Google Hangout Event
Calendar Event: Add to your calendar here
Meeting Notes

Summary

The Celo Celo Wallet Council Call is the "All Hands" call for all Celo Wallet Developers to to come together, discuss ideas that shape our Celo ecosystem, and align on best practices.

Agenda

  • WalletConnect Wallet and Dapp Adoption
  • Transaction decoding/signature safety

Celo All-Core Dev Call #5

Celo All-Core Devs Call 5

All-Core-Dev-Call-end-card

Event Details

When: Thursday, February 25, 2021, 1 PM EST/10 AM PST, 60 minutes max
Where: Celo Zoom Event (Instructions on joining found in the calendar event below)
Calendar Event: Add to your calendar here
Focus: Finalizing Donut Meta Specification

Agenda

Please post all relevant proposals below that should be discussed and evaluated

Resolution for inconsistency between onchain proposalID and CGP numbers

On the Celo Governance Call 6, we discussed this problem.

Requirements

  • alignment across off-chain forums and on-chain content (no proposalID YYY pointing to CGP XXX)
  • actionable and clear comms for voters and approvers
  • memorable and easily referenced proposal labels

Solution space

  1. Use content-derived hashes and leverage already implemented hotfix hash derivation

  2. Allow proposalIDs to be parameterized by the proposer and prevent collisions with changes to Governance contract, potentially exposing the ability to reserve specific identifiers for future use

Benefits of approach 1

  • leveraging existing tooling and minimal dev work
  • environment agnostic proposal content: proposalIDs don't need to match across alfajores, baklava, and mainnet
  • avoids namespace collisions and social coordination problems

Benefits of approach 2

  • maintaining already entrenched proposalID reference (used across SDK/CLI etc.)
  • more configurable onchain representation
  • does not require well-defined governance proposal contents to be labelled: reserved proposal identifier doesn't have to change if the contents do

My preference is approach 1 for the aforementioned reasons and the fun benefit of using hashes for more memorable labels like colors, emojis, or foods in the spirit of celo's existing namespaces. Curious to hear others' thoughts.

CIP 32 - Attestation Node Incentives - Discussions

CIP 32 #121 proposes introducing Attestation Service operation incentives via slashing. This is the first step toward a more discerning incentive system. As such, it's focused on a min uptime bar (one attestation over 11 days) and will not increase validator rewards. Future proposals will likely support more granular uptime measures and the potential for operators to earn additional reward.

Celo All-Core Devs Call 8

Celo All-Core Devs Call 8

All-Core-Dev-Call-end-card

Event Details

When: Thursday, August 12th, 2021, 12 PM EST/9 AM PST, 60 minutes max
Where: Celo Zoom Event
Meeting ID: 976 6943 6665
Calendar Event: Add to your calendar here

Summary

The Celo All-Core Dev Call is the "All Hands" call for all Celo Core Developers to coordinate technical specifications and proposals and discussions to the Celo Platform.

Agenda

Please post all relevant proposals below that should be discussed and evaluated

Celo Wallet Council Call 2

Celo Wallet Council Call 2

Wallet Council Call

Event Details

When: Wednesday, September 1st, 2021, 12 PM EST/9 AM PST, 60 minutes max
Where: Google Hangout Event
Calendar Event: Add to your calendar here
Meeting Notes

Summary

The Celo Celo Wallet Council Call is the "All Hands" call for all Celo Wallet Developers to to come together, discuss ideas that shape our Celo ecosystem, and align on best practices.

Agenda

We would like to continue identity discussions we started last week. Feel free to add other discussion ideas and +1 in the comments of this ticket.

  • EIP3074 - possibly eliminates the need for Metatransaction Wallets
  • Phone number verifications - usage, user experience, batch processing, centralization
  • Token Standards - TBD add reference documentation

Celo All-Core Devs Call 9

Celo All-Core Devs Call 9

All-Core-Dev-Call-end-card

Event Details

When: Thursday, August 26th, 2021, 12 PM EST/9 AM PST, 60 minutes max
Where: Celo Zoom Event
Meeting ID: 914 1268 3393
Calendar Event: Add to your calendar here

Summary

The Celo All-Core Dev Call is the "All Hands" call for all Celo Core Developers to coordinate technical specifications and proposals and discussions to the Celo Platform.

Agenda

Please post all relevant proposals below that should be discussed and evaluated

Celo Wallet Council Call 3

Celo Wallet Council Call 3

Wallet Council Call

Event Details

When: Wednesday, September 29th, 2021, 12 PM EST/9 AM PST, 60 minutes max
Where: Google Hangout Event
Calendar Event: Add to your calendar here
Meeting Notes

Summary

The Celo Celo Wallet Council Call is the "All Hands" call for all Celo Wallet Developers to to come together, discuss ideas that shape our Celo ecosystem, and align on best practices.

Agenda

Feel free to add other discussion ideas and +1 in the comments of this ticket.

  • [25-30 min] Account Recovery @nategraf [Continued from last session]
  • [15-20 min] Wallet Roadmaps - Wallet's share their near/long-term roadmaps
    If time permits:
  • Blockchain indexing service @gnardini
  • [10-15 min] WalletConnect Wallet and Dapp Adoption @zviadm [Did not get to last session]

CIP 49 - Transaction Signature Safety - Discussion

Replicated here:


lang: en
cip: 0049
title: Transaction Signature Safety
status: Idea
type: Informational
discussions-to: #293
author: Nam Chu Hoai (@nambrot)
created: 2021-10-12
license: Apache 2.0

Abstract

This CIP outlines a roadmap for a collection of improvements aimed at making transaction signing more transparent and by extension hopefully safer for users, especially less technical ones. The proposed measures for the most part are fairly chain-agnostic (i.e. not specific to Celo) and could be ported over to other chains easily.

Motivation

One of the key characteristics of decentralized networks that have come since the Bitcoin whitepaper is the use of non-custodial cryptographic keys to authenticate user intent. Instead of a user telling a bank to initiate a transfer which makes them and their underlying infrastructure a gatekeeper, anyone is able to sign a transaction and submit it to the network (assuming it is credibly decentralized and neutral). With the creation of Ethereum, smart contract platforms have expanded to general purpose computation. However, as the complexity of transactions that can be signed have increased, the ability for users to understand the implications of what their keys are signing has not. Often, the only information available to the users are the to contract as well as the raw data bytes. As this space moves away from early adopters to "the mainstream", we can no longer rely on informed users who have build muscle memory for protective heurestics.

Specification

The roadmap is proposed as follows:

  1. Make contract verification and transaction decoding accessible to developers

The current state of contract verification is mostly manual in its consumption from hosted block explorers, some of which are proprietary and permissioned. We propose to leverage Sourcify.dev to faciliate access to verified source code and ABIs. This includes both tooling/documentation to make verifying on Sourcify easier, as well as fetching from it. It may even involve verifiying popular contracts by recompiling. Following/extracting from CeloTerminal would be the most likely avenue for this. This tooling can be written generally enough to ultimately fetch from other sources (Etherscan comes to mind.) As Celo Core contracts make significant use of proxies, support for them should be considered required for v1.

  1. Demo via a WalletConnect Proxy

Since existence of tooling and documentation does not guarantee actual implementation for users, we propose to build a WalletConnect proxy as a demonstration of the "state of the art" experience. On the proxy, users can connect their wallet via use-contractkit(Celo)/Onboard.js(Ethereum) and then the proxy itself can be connected to the dapp. Requests for transaction signature can be displayed on the proxy first for introspection before forwarded to the actual wallet for signature.

  1. Expand the experience

Up to this point, the experience is not actually state-of-the-art yet as some wallets do support selective transaction decoding. To improve upon the experience, it is necessary to provide judgement (read more why under Rationale). To quickly iterate upon which judgements (aka attestations) are actually valuable, we propose to use the proxy for that experimentation which effectively makes the hoster of it a trust-delegated party. The entity is encouraged to use an open-source repository of these attestations on Github to leave an audit trail and allow for discussion. When the value is validated, these attestations can be exposed via an API and further decentralized via Step 4.

The most impactful attestations we propose are:

  • Canonical Identity Attestation
    • Example: { type: 'canonical_identity', project: 'Ubeswap', contract: 'Ubeswap Router' }
    • Knowing which contract we are interacting with is the most powerful defense, one that many current users do by going on a block explorer and verifying there. It leverages the reputation of the project and the rough consensus of legitimacy to assure the user.
  • Warning Attestation (aka the rug pull attestation)
    • Example: { type: 'warning' }
    • When a contract is known to be a rug pull, there are currently few avenues by which users can be warned to cease further interaction with
  • Contract Interaction Stats
    • Volume Attestation
      • Example: { type: 'volumeStat', volumeLast24Hours: '1M', volumeLast7Days: '10M' }
      • The more value has interacted with this contract, the
      • Issues:
        • Has to be dynamically computed with an indexer
        • can be gamed via wash trading
    • Balance Attestation
      • Example: { type: 'balanceStat', value: '100M' }
      • The value this contract holds is in effect an attestation by the holders of the value
      • Issues:
        • Contract can be permissioned for the owner to rug
  1. Decentralize and turn into a protocol

When the value of this approach is validated, the final part of this proposal is to turn it into an actual protocol by creating a "market" for these attestations that anyone can make and can subscribe to. For this, an established identity protocol is required, as well as a means of publishing and consuming these attestations.

Rationale

The philosphy behind this proposal is to help users navigate the risks of signing data and decrease the semantic gap. Wallets as the technical custodians of key are believed to be the primary responsible party to surface relevant data to the user in an accessible/understandable manner. Building tooling to lower the cost for wallets acting upon that responsability is a positive externality for the whole ecosystem. However, neutral verification is limited and ultimately judgements of various kinds have to be made. We shall call them attestations and below follows a treatment of relevant considerations/dimensions:

What can be attested?

Attestations exist on a spectrum, from a loose "I believe this contract was deployed with good intent by good people" to a stricter "I did a thorough audit of this contract". While attestations of the latter end of the spectrum are of course the strongest, the number of entities that will be comfortable making those attestations is likely very small if non-existent. The scope of attestation as in the literal expression of the attestation might be different from user interpretation. Even if someone like cLabs just attests "We superficially looked into the project and think its probably fine", it's unclear to me whether there is moral or legal liability in case of loss of funds. In that light, keeping the set of possible attestations small to set the right user expectations is critical.

Another relevant dimension of attestations are their domains, i.e. the underlying contract might be a valid one (i.e. the audited Multisig), but the wrong identity (i.e. a multisig controlled by an attacker vs. the governance approver multisig). Another example would be a token contract that pretends to be another legitimate one, and dupes you into providing liquidity for it.

With that being said, to prevent the most egregious instances of rug-pulls or phishing attacks, we propose the following set of attestations to consider:

  • Code Intent: The ABI for this contract is indicative of the code's intent
  • Canonical Identity: The identity of this contract is X.
    • I.e. this is the UBE token contract
  • Good Faith Identity: This identity is a good faith actor.
  • Rug-pull: Something is wrong with this contract/identity, please use caution
  • (Maybe) This contract was audited by X (X does not have to be the attester)
  • (Maybe) Owner of this contract can significantly impact functionality of this contract (with ideally some kind of display of who the owner is)

Another class of attestations are quantitative in nature:

  • Age of contract deployment
  • Transaction count over 24 hours, 7 days, 30 days, 1 year
  • Value that has interacted with this contract historically
  • Value that is currently controlled by this contract (+ historically)
  • Amount of LockedCelo this account represents (or any other illiquid asset indicating investment)

These numers can theoretically be calculated independently, but practically require an indexer which in of itself is an attestation to running it correctly. Since some of these numbers can be gamed, an additional extension of these attestations is to calculate them relative to a users social graph, i.e. what number of my friends have used this contract.

Who provides attestations?

Attestations only provide value insofar that the consumer of the attestation values the judgement of the attester. That could be the following parties:

  • The developer itself (i.e. the contract deployer or the contract itself)
    • While maybe one of the weaker attesters, it would still protect against supply-chain attacks within the developer. I.e. if the key that identifies the developer is "colder" than access to the frontend code itself, it will lower the success rate of an attack. (similar to DNS record control)
  • The Wallet developer
    • A user's wallet developer is likely their most important trust relationship, thus it makes sense to leverage that relationship to provide these attestations. However, it is unclear whether wallet developers will want to provide these attestations and instead delegate them to other parties with domain knowledge.
    • An interesting example of this is Argent's trust list (https://support.argent.xyz/hc/en-us/articles/360019125917-Transactions-with-Trust-Lists), though their attestations are very binary
  • cLabs/ecosystem developer
    • As the most identifiable steward of the Celo platform overall, cLabs already is taking plenty of responsibility for the safety of users and thus is in a natural place to provide these attestations. While cLabs likely won't conduct actual audits, lightweight attestations seems possible and are the recommended first step.
  • Celo foundation
    • Similar to cLabs.
  • Trusted community members/crowdsourced/service providers
    • Assuming that the identity attestation from 2.1 is implemented, everything would be in place for a market/community of attesters to develop that users can subscribe to. It is also worth noting that developers of project A integrating with project B will have an incentive to provide an attestation for project B. (i.e. Moola + Ubeswap)

How to identify an attester?

While specifying the identity protocol this proposal would use is out of scope, it is worth noting which identity attributes are relevant for it. While entities such as cLabs or the foundation can probably publish their addresses easily, it becomes marginally more difficult for projects building on Celo. Currently, the strongest attributes users associate with projects are a their websites (i.e. domain name) and their twitter accounts, which would also be the proposed requirements for the identity protocol from this proposal.

How to communicate an attestation?

This is a minor point but and again slightly outside the scope of this proposal, but given the relative high cost of providing attestations, all measures should be token to make the conceptual and practical overhead of doing so minimal. In this context, both the signing and storage/publication of the attestation should be doable with already accessible tooling. For signing, EIP-712 seems the most accessible. For storage, a centralized approach could work but is not ideal to generalize further. CIP-8 with additional work like a centralized hosted version could get the same accessbility while providing the path for decentralization.

Security Considerations

While of course the goal of this proposal is to increase transparency and safety for users, it shall be noted that this proposal does increase the surface area of code, services and entities that are being trusted which could open more opportunities for phishing. It's important for the community but especially implementors to understand how to display the information to users so that phishing users doesn't become trivial.

CIP 25 - ed25519 precompile - Discussions

Deployment Checklist

  • Specification
  • Implementation
    • celo-blockchain
  • Testing
    • Unit tests
    • Benching & Gas assignment
    • gas calculation tests
  • Pre-deploy
    • Precompile Address assignment in Donut block
  • Verification
    • Run the test vectors via eth_call RPC

Celo Core Talk #1

Celo Core Talk 1: SPURT

When: May 13, 2021 11:00 AM EST / 8:00 AM PST. 60 minutes
Where: Celo Zoom Event (Instructions on joining found in the calendar event below)
Meeting ID: 949 9288 4176
Calendar Event: Add to your calendar here

Event Description

Join us in learning more from Sourav about SPURT, a scalable distributed randomness beacon with transparent setup, and how it improves on existing state of the art.

Celo All-Core Dev Call 4

Celo All-Core Devs Call 4

When: Thursday, January 14, 2021, 1 PM EST/10 AM PST, 60 minutes max
Where: Celo Zoom Event (Instructions on joining found in the calendar event below)
Calendar Event: Add to your calendar here
Focus: Finalizing Donut Meta Specification

Agenda

Please post all relevant proposals below that should be discussed and evaluated

CIP 20 - Extensible Hash Precompile - Discussions

Migrating my comments from the forum:

The goal is to provide access to some common cryptographic hash functions. We do that by adding them all to a single precompile. Right now the precompile supports common SHA3 variants (SHA3-256, SHA3-512, and Keccak-512), as well as blake2s

Link to CIP

Deployment Checklist

  • Specification
  • Implementation
  • Testing
    • Unit tests
    • Fuzzing w/ smash
    • Benching & Gas assignment
    • gas calculation tests
  • Pre-deploy
    • Precompile Address assignment in Donut block
  • Verification
    • Run the test vectors via eth_call RPC

Celo All-Core Dev Call 6

Celo All-Core Devs Call 6

All-Core-Dev-Call-end-card

Event Details

When: Thursday, March 11, 2021, 1 PM EST/10 AM PST, 60 minutes max
Where: Celo Zoom Event
Meeting ID: 981 7546 3252
Passcode: 290324
Calendar Event: Add to your calendar here

Focus: Node Attestation Incentives, Donut Schedule

Agenda

Please post all relevant proposals below that should be discussed and evaluated

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.