Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build-on-celo/build-with-ai/mcp/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,4 @@ Explore existing MCP server implementations:
## Additional Resources

- [Official MCP Documentation](https://modelcontextprotocol.io/introduction)
- [MCP Community Forum](https://community.modelcontextprotocol.io)
- [MCP Community Discussions](https://github.com/modelcontextprotocol/modelcontextprotocol/discussions)
2 changes: 1 addition & 1 deletion build-on-celo/build-with-defi.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Celo supports a vibrant ecosystem of DeFi protocols that utilize stablecoins:
### Lending & Borrowing

- **[Aave](https://aave.com/)** – Decentralized lending and borrowing platform officially launched on Celo in 2025, expanding lending options with institutional and retail liquidity support.
- **[Credit Collective](https://creditcollective.xyz/)** – On-chain private credit protocol supporting real-world assets (RWAs) and emerging market stablecoins. Manages liquidity strategies and provides sustainable market-making for new stablecoins.
- **[Credit Collective](https://www.credit-collective.com)** – On-chain private credit protocol supporting real-world assets (RWAs) and emerging market stablecoins. Manages liquidity strategies and provides sustainable market-making for new stablecoins.
- **[PWN](https://pwn.xyz/)** – Fixed rate lending platform.

### Exchanges
Expand Down
10 changes: 5 additions & 5 deletions build-on-celo/build-with-self.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,11 @@ Self has introduced a points program that incentivizes consistent, secure use:
- [Self Documentation](https://docs.self.xyz/)
- [Self Playground](https://playground.self.xyz/)
- [Self Staging Playground](https://playground.staging.self.xyz/)
- [Self Quickstart Guide](https://docs.self.xyz/use-self/quickstart)
- [Contract Integration Guide](https://docs.self.xyz/contract-integration/basic-integration)
- [Backend Integration Guide](https://docs.self.xyz/backend-integration/basic-integration)
- [QRCode SDK Documentation](https://docs.self.xyz/frontend-integration/qrcode-sdk)
- [Deployed Contracts](https://docs.self.xyz/contract-integration/deployed-contracts)
- [Self Quickstart Guide](https://docs.self.xyz/docs/self-pass/quickstart)
- [Contract Integration Guide](https://docs.self.xyz/docs/self-pass/contracts/basic-integration)
- [Backend Integration Guide](https://docs.self.xyz/docs/self-pass/backend/basic-integration)
- [QRCode SDK Documentation](https://docs.self.xyz/docs/self-pass/frontend/qrcode-sdk)
- [Deployed Contracts](https://docs.self.xyz/docs/self-pass/contracts/deployed-contracts)

## Support

Expand Down
2 changes: 1 addition & 1 deletion build-on-celo/fee-abstraction/add-fee-currency.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ For background on how fee abstraction works, see the [Overview](/build-on-celo/f

## The IFeeCurrency Interface

Fee currencies must implement the [IFeeCurrency](https://github.com/celo-org/fee-currency-example/blob/main/src/IFeeCurrency.sol) interface, which extends ERC20 with two additional functions used by the Celo blockchain to debit and credit gas fees.
Fee currencies must implement the [IFeeCurrency](https://github.com/celo-org/fee-currency-example/blob/92e2fcb/src/IFeeCurrency.sol) interface, which extends ERC20 with two additional functions used by the Celo blockchain to debit and credit gas fees.

When a [CIP-64](https://github.com/celo-org/celo-proposals/blob/master/CIPs/cip-0064.md) transaction is executed:

Expand Down
2 changes: 1 addition & 1 deletion contribute-to-celo/community-rpc-nodes/how-it-works.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Elections are handled my smart contracts, and as such can be changed through Cel

- [`LockedGold.sol`](https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts/governance/LockedGold.sol) manages the lifecycle of Locked Gold.

- [`Validators.sol`](https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts/governance/Validators.sol) handles registration, deregistration, staking, key management and epoch rewards for validators and validator groups, as well as routines to manage the members of groups.
- [`Validators.sol`](https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts-0.8/governance/Validators.sol) handles registration, deregistration, staking, key management and epoch rewards for validators and validator groups, as well as routines to manage the members of groups.

- [`Election.sol`](https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts/governance/Election.sol) manages Locked Gold voting and epoch rewards and runs Validator Elections.

Expand Down
6 changes: 3 additions & 3 deletions contribute-to-celo/release-process/smart-contracts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ Github branches/tags and Github releases are used to coordinate past and ongoing
There are several scripts provided (under `packages/protocol` in [celo-org/celo-monorepo](https://github.com/celo-org/celo-monorepo) and via [celocli](/cli/)) for use in the release process and with contract upgrade governance proposals to give participating stakeholders increased confidence.

<Warning>
For these to run, you may need to follow the [setup instructions](https://github.com/celo-org/celo-monorepo/blob/master/SETUP.md). These steps include installing Node and setting `nvm` to use the correct version of Node. Successful `yarn install` and `yarn build` in the protocol package signal a completed setup.
For these to run, you may need to set up the celo-monorepo: follow the [Getting Started](https://github.com/celo-org/celo-monorepo/blob/045aa0061/README.md#-getting-started) steps and install the Node version pinned in [`.nvmrc`](https://github.com/celo-org/celo-monorepo/blob/045aa0061/.nvmrc) (managed with `nvm`). A successful `yarn install` and `yarn build` in the protocol package signal a completed setup.
</Warning>

Using these tools, a contract release candidate can be built, deployed, and proposed for upgrade automatically on a specified network. Subsequently, stakeholders can verify the release candidate against a governance upgrade proposal's contents on the network.
Expand Down Expand Up @@ -117,7 +117,7 @@ The following exceptions apply:

Critically, this ensures that proxied contracts do not experience storage
collisions between implementation versions. See [this
article](https://docs.openzeppelin.com/upgrades-plugins/1.x/proxies#storage-collisions-between-implementation-versions)
article](https://docs.openzeppelin.com/upgrades-plugins/proxies#storage-collisions-between-implementation-versions)
by OpenZeppelin for a good overview of this problem and why it's important to
check for it.

Expand Down Expand Up @@ -304,7 +304,7 @@ Deploying a new contract release should occur with the following process. On-cha
<ol>
<li>
{" "}
Submit a governance proposal draft using this [format: ](https://github.com/celo-org/celo-proposals/blob/master/CGPs/template.md)
Submit a governance proposal draft using this [format: ](https://github.com/celo-org/governance/blob/main/CGPs/cgp-template.md)
</li>
<li>
{" "}
Expand Down
2 changes: 1 addition & 1 deletion home/protocol/governance/voting-in-governance.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ metadata:
deposit: 100000000000000000000 (~1.000e+20)
timestamp: 1609961608 (~1.610e+9)
transactionCount: 1
descriptionURL: https://github.com/celo-org/celo-proposals/blob/master/CGPs/0016.md
descriptionURL: https://github.com/celo-org/governance/blob/main/CGPs/cgp-0016.md
stage: Referendum
upvotes: 0
votes:
Expand Down
2 changes: 1 addition & 1 deletion tooling/dev-environments/hardhat.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Choose one of the following items to prepare a dApp to deploy on Celo.

## Update the hardhat.config.js file

Open [hardhat.config.js](https://hardhat.org/config/) in a text editor and replace its contents with this [Celo configuration code](https://github.com/celo-org/celo-composer/blob/main/packages/hardhat/hardhat.config.ts). This code is similar to Hardhat settings with a few configuration updates needed to deploy to a Celo network. You will need to create a `.env` file in the project root directory and install `dotenv` with npm or yarn in order to read the `process.env.MNEMONIC` variable in the config file.
Open [hardhat.config.js](https://hardhat.org/config/) in a text editor and replace its contents with this [Celo configuration code](https://github.com/celo-org/celo-composer/blob/main/templates/contracts/hardhat/hardhat.config.ts.hbs). This code is similar to Hardhat settings with a few configuration updates needed to deploy to a Celo network. You will need to create a `.env` file in the project root directory and install `dotenv` with npm or yarn in order to read the `process.env.MNEMONIC` variable in the config file.

### Connect to Testnet using Forno

Expand Down
2 changes: 1 addition & 1 deletion tooling/indexers/indexing-co.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ cp -r indexing-co-pipeline-skill/skills/indexing-co-pipelines ~/.claude/skills/
## Resources

- [Documentation](https://docs.indexing.co)
- [Platform](https://app.indexing.co)
- [Platform](https://indexing.co)
- [GitHub](https://github.com/indexing-co)
- [MCP Server](https://github.com/indexing-co/indexing-co-mcp)
- [Claude Code Skill](https://github.com/indexing-co/indexing-co-pipeline-skill)
Expand Down
29 changes: 10 additions & 19 deletions tooling/libraries-sdks/contractkit/odis.mdx
Comment thread
seolaoh marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,7 @@ One of Celo's key features is the ability to associate a phone number to a Celo
ODIS requests are rate-limited based on transaction history and balance. Ensure the account that is performing the queries has a balance and has performed transactions on the network. If an out of quota error is hit, this indicates that more transactions need to be sent from the querying account.
</Note>

There are two methods for ODIS:

1. `getPhoneNumberIdentifier` - Query and compute the identifier for a phone number
2. `getContactMatches` - Find mutual connections between users
The main ODIS method is `getObfuscatedIdentifier`, which queries and computes the on-chain identifier for an off-chain identifier such as a phone number.

<Tip>
See [this overview document](/legacy/protocol/identity/odis-use-case-phone-number-privacy) for more details on ODIS.
Expand Down Expand Up @@ -87,28 +84,22 @@ This call consumes quota. When the user runs out of quota, it's recommended to p

### BLS Blinding Client

It's important for user privacy that the ODIS servers don't have the ability to view the raw phone number. Before making the request, the library first blinds the phone number using a BLS library. This prevents the ODIS from being able to see the phone number but still makes the resulting signature recoverable to the original phone number. The blinding client is written in [Rust](https://github.com/celo-org/celo-threshold-bls-rs) and compiled to Web Assembly, which is not compatible with React native. If you choose not to pass in a `BLSBlindingClient` it will default to the Web Assembly version. You may create a `ReactBlindingClient` by calling the constructor with the ODIS public key:

```ts
const blsBlindingClient = new ReactBlsBlindingClient(odisPubKey);
```
It's important for user privacy that the ODIS servers don't have the ability to view the raw phone number. Before making the request, the library first blinds the phone number using a BLS library. This prevents ODIS from seeing the phone number while still making the resulting signature recoverable to the original phone number. The blinding client is written in [Rust](https://github.com/celo-org/celo-threshold-bls-rs) and compiled to WebAssembly.

Or use the `WasmBlsBlindingClient` if your runtime environment supports Web Assembly:
The SDK ships a `WasmBlsBlindingClient`. If you don't pass a blinding client, `getObfuscatedIdentifier` defaults to it:

```ts
const blsBlindingClient = new WasmBlsBlindingClient(odisPubKey);
```

Now you're ready to get the phone number identifier. `OdisUtils.PhoneNumberIdentifier.getPhoneNumberIdentifier` [documentation can be found here](https://github.com/celo-org/celo-monorepo/blob/master/packages/sdk/identity/src/odis/phone-number-identifier.ts#L36).
`WasmBlsBlindingClient` only runs in a Node.js environment: its constructor throws in React Native and in the browser. For browser or React Native runtimes, pass your own web blinding client. See the [example web blinding client](https://github.com/celo-org/social-connect/blob/d013ed9/docs/examples/blinding/webBlindingClient.ts) in the social-connect repo.

The response will be [an object](https://github.com/celo-org/celo-monorepo/blob/master/packages/sdk/identity/src/odis/phone-number-identifier.ts#L26) with the original phone number, the on-chain identifier (phoneHash), and the phone number's pepper.
Now you're ready to get the on-chain identifier. `OdisUtils.Identifier.getObfuscatedIdentifier` [documentation can be found here](https://github.com/celo-org/social-connect/blob/d013ed9/packages/identity/src/odis/identifier.ts#L105).

You can view an example of this call in [our mobile project here](https://github.com/celo-org/wallet/blob/master/packages/mobile/src/identity/privateHashing.ts).
The response will be [an `IdentifierHashDetails` object](https://github.com/celo-org/social-connect/blob/d013ed9/packages/identity/src/odis/identifier.ts#L74) with the plaintext identifier, the on-chain identifier (`obfuscatedIdentifier`), and the pepper.

## Matchmaking

Instead of querying for all the user's contact's peppers and consuming the user's quota, it's recommended to only query the pepper before it's actually used (ex. just before sending funds). However, sometimes it's helpful to let your users know that they have contacts already using the Celo network. To do this, you can make use of the matchmaking interface. Given two phone numbers, it will let you know whether the other party has also registered on the Celo network with this identifier. `OdisUtils.Matchmaking.getContactMatches` [documentation can be found here](https://github.com/celo-org/celo-monorepo/blob/master/packages/sdk/identity/src/odis/matchmaking.ts#L19).

The response will be a subset of the input `e164NumberContacts` that are matched by the matchmaking service.
<Note>
The older `OdisUtils.PhoneNumberIdentifier.getPhoneNumberIdentifier` (which returns a `phoneHash`) is deprecated in favor of `getObfuscatedIdentifier`.
</Note>

You can view an example of this call in [our mobile project here](https://github.com/celo-org/wallet/blob/master/packages/mobile/src/identity/matchmaking.ts).
You can view an example of this call in the [SocialConnect Twitter sample app](https://github.com/celo-org/SocialConnect-Twitter/blob/f5d398f/packages/react-app/pages/index.tsx).
2 changes: 1 addition & 1 deletion tooling/libraries-sdks/contractkit/setup.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ To start working with ContractKit you need a `kit` instance and a valid net to c
import Web3 from "web3";
import { newKitFromWeb3 } from "@celo/contractkit";

const web3 = new Web3("https://alfajores-forno.celo-testnet.org");
const web3 = new Web3("https://forno.celo-sepolia.celo-testnet.org/");
const kit = newKitFromWeb3(web3);
```

Expand Down
2 changes: 1 addition & 1 deletion tooling/libraries-sdks/dynamic/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ You can see a CodeSandbox of the example below [here](https://shv1y7.csb.app/) (

## Prerequisites

Dynamic works with React today. You can go through the standard getting started guide [here](https://docs.dynamic.xyz/docs/getting-started-with-dynamic).
Dynamic works with React today. You can go through the standard getting started guide [here](https://docs.dynamic.xyz/introduction/welcome).

## Step 1: Create a Dynamic account

Expand Down
6 changes: 3 additions & 3 deletions tooling/libraries-sdks/jaw/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ const result = await provider.request({
console.log('Permission granted:', result.permissionId);
```

Once a permission is granted, a server-side spender can execute calls against it using `Account.fromLocalAccount()` from `@jaw.id/core`. See [Subscription Payments](https://docs.jaw.id/guides/subscription-payments) and [Account API](https://docs.jaw.id/account) for full details.
Once a permission is granted, a server-side spender can execute calls against it using `Account.fromLocalAccount()` from `@jaw.id/core`. See [Subscription Payments](https://docs.jaw.id/guides/subscription) and [Account API](https://docs.jaw.id/account) for full details.

## Authentication Modes

Expand All @@ -343,8 +343,8 @@ See the [JAW configuration docs](https://docs.jaw.id/configuration) for setup de
- [Quickstart guide](https://docs.jaw.id/guides/quickstart): full end-to-end walkthrough
- [Account API](https://docs.jaw.id/account): headless smart accounts for agents and server-side use
- [Gas Sponsoring](https://docs.jaw.id/guides/gas-sponsoring): paymaster setup and sponsorship policies
- [Sign-In With Ethereum](https://docs.jaw.id/guides/sign-in-with-ethereum): SIWE during connection
- [Subscription Payments](https://docs.jaw.id/guides/subscription-payments): recurring charges with delegated permissions
- [Sign-In With Ethereum](https://docs.jaw.id/guides/siwe): SIWE during connection
- [Subscription Payments](https://docs.jaw.id/guides/subscription): recurring charges with delegated permissions
- [Onchain Identity](https://docs.jaw.id/guides/onchain-identity): ENS subname issuance on onboarding
- [Configuration reference](https://docs.jaw.id/configuration): all config options

Expand Down
4 changes: 2 additions & 2 deletions tooling/nodes/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,8 @@ https://thirdweb.com/celo

- Celo Mainnet

<Card href="https://docs.pokt.network/reference/supported-chains#pokt-mainnet" arrow title="POKT">
https://docs.pokt.network/reference/supported-chains#pokt-mainnet
<Card href="https://docs.pocket.network/developers/supported-chains" arrow title="POKT">
https://docs.pocket.network/developers/supported-chains
</Card>

### Tatum
Expand Down
4 changes: 2 additions & 2 deletions tooling/oracles/quex-oracles.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@ Unlike traditional oracles, Quex allows you to securely make verifiable API call

IMPORTANT: Quex contracts are currently undergoing security audits and infrastructure security improvements. Before using Quex oracles in production dApps, please reach out to us [on Discord](https://discord.com/invite/NsuE32xHvj). We'll be happy to assist you with the integration and, if needed, set up a dedicated data oracle pools if there is a need.

Please refer to this [short documentation](https://docs.quex.tech/developers/getting_started2) to learn how to integrate your dApp with Quex oracles.
Please refer to this [short documentation](https://docs.quex.tech/consumer/getting_started/) to learn how to integrate your dApp with Quex oracles.

## 🔥 How to use Quex oracles?

IMPORTANT: Quex contracts are currently undergoing a security audit, and we are actively working on infrastructure security improvements. Before using Quex oracles in production dApps, please reach out to us [on Discord](https://discord.com/invite/NsuE32xHvj). We’ll be happy to assist you with integration and, if necessary, set up a dedicated pool of data provider nodes.

Please read this [short getting started guide](https://docs.quex.tech/developers/getting_started2) to learn how to integrate your dApp with Quex oracles.
Please read this [short getting started guide](https://docs.quex.tech/consumer/getting_started/) to learn how to integrate your dApp with Quex oracles.

## 👨‍💻 Code examples

Expand Down
4 changes: 2 additions & 2 deletions tooling/oracles/run.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ The output field of `privateKey` should be stored in a file and its path should
WARNING: it is encouraged that before running the oracles in production, they should run for at least a week in one of the Celo Public testnets.
</Warning>

The configuration currently run by cLabs in production can be found [here](https://github.com/celo-org/celo-monorepo/tree/master/packages/helm-charts/oracle) for each stable token. It is strongly advised not to modify the recommended values, especially the exchange sources, unless there is good data to support it.
The configuration previously run by cLabs in production can be found [here](https://github.com/celo-org/helm-charts-deprecated/tree/master/packages/helm-charts/oracle) (in the archived `helm-charts-deprecated` repo) for each stable token. It is strongly advised not to modify the recommended values, especially the exchange sources, unless there is good data to support it.

The only variable that is not set in the env file is `PRICE_SOURCES`. This sets what exchanges and prices shall be used to report. It is recommended to store this in a file called `price_sources` and export the content to a new env variable with `cat`.

Expand Down Expand Up @@ -122,7 +122,7 @@ The last step to run an oracle is to enable their addresses on-chain using the [

## Using kubernetes

You can reference [Helm Charts](https://helm.sh/docs/topics/charts/) configuration used by cLabs, which can be found in the [celo-monorepo repository](https://github.com/celo-org/celo-monorepo/tree/master/packages/helm-charts/oracle).
You can reference [Helm Charts](https://helm.sh/docs/topics/charts/) configuration used by cLabs, which can be found in the [archived `helm-charts-deprecated` repository](https://github.com/celo-org/helm-charts-deprecated/tree/master/packages/helm-charts/oracle).

## Metrics

Expand Down
Loading