Ir al contenido principal

Contratos Principal (Wrapper/Registry)

Cómo interactuar con los activos CELO utilizando los Contratos Principales wrapper y registry.


Interactuando con CELO & cUSD

el blockchain Celo tiene dos monedas iniciales: CELO y cUSD (stableToken). Ambas implementan el estándar ERC20, e interactuar con estas es tan simple como:

const goldtoken = await kit.contracts.getGoldToken();

const balance = await goldtoken.balanceOf(someAddress);

Para enviar fondos:

const oneGold = kit.web3.utils.toWei("1", "ether");
const tx = await goldtoken.transfer(someAddress, oneGold).send({
from: myAddress,
});

const hash = await tx.getHash();
const receipt = await tx.waitReceipt();

Para interactuar con cUSD, es lo mismo pero con un contrato diferente:

const stabletoken = await kit.contracts.getStableToken();

Interactuando con otros contratos de Celo

Aparte de GoldToken y monedas estables Mento, hay muchos contratos principales.

Por el momento, tenemos wrappers de contrato para:

  • Accounts
  • Attestations
  • BlockchainParameters
  • DobleSigningSlasher
  • DowntimeSlasher
  • Election
  • Escrow
  • Exchange (intercambio tipo Uniswap entre Gold y Stable tokens)
  • GasPriceMinimum
  • GoldToken
  • Governance
  • LockedGold
  • Reserve
  • SortedOracles
  • Validators
  • StableToken

Una nota sobre las direcciones de contratos

Las direcciones de los contratos principales, se pueden obtener mirando el contrato Registry. De hecho, así es como kit las obtiene.

Exponemos el api del registro, al que se puede acceder por:

const goldTokenAddress = await kit.registry.addressFor(CeloContract.GoldToken);

Accediendo a los wrappers de contratos web3

Algún usuario podría querer acceder a los wrappers nativos de contratos web3. Recomendamos utilizar los contratos de Celo en su lugar para evitar errores.

Para hacerlo, tienes que:

const web3Exchange = await kit._web3Contracts.getExchange();

Exponemos wrappers nativos para todos los contratos Web3.

La lista completa es:

  • Accounts
  • Attestations
  • BlockchainParameters
  • DoubleSigningSlasher
  • DowntimeSlasher
  • Election
  • EpochRewards
  • Escrow
  • Exchange
  • FeeCurrencyWhiteList
  • GasPriceMinimum
  • GoldToken
  • Governance
  • LockedGold
  • Random
  • Registry
  • Reserve
  • SortedOracles
  • StableToken
  • Validators

Depurando

Si necesitas depurar kit, usaremos la conocida librería de node debug.

Así que configura la variable de entorno DEBUG como:

DEBUG="kit:*,