CARBON est un protocole et un token Solana piloté par un agent IA. Il évalue des décisions et événements à l’aune des ODD (SDG) et des chartes universelles des droits des humains et de la nature, puis agit on-chain.
- Aligne avec ODD/Chartes (implémenté et vérifié) →
BURNdes tokens (supply ↓, valeur ↑) - Régression contraire aux droits/ODD (implémentée) →
MINTdes tokens (supply ↑, valeur ↓) - Annonce future/conditionnelle/recours →
NEUTRAL(amount = 0) jusqu’à vérification - Transparence systémique: sources, hypothèses et clause de faillibilité publiées; réévaluations périodiques
- Aucune liberté: tout est défini par le Livre Blanc; le code et l’opération s’y conforment strictement.
- Interdit: créer/rotater une nouvelle mint, modifier
CBWD_MINTou des adresses sans gouvernance écrite et référence explicite au Livre Blanc. - Exigé: toute évolution doit référencer une section du Livre Blanc dans le README et le changelog, et être validée avant exécution.
- Source de vérité actuelle (devnet):
CBWD_MINT=5bRPS8YnNMYZm6Mw86jkJMJpj9ZpCmq7Wj78gNAFnjHC(mint d’origine: 1 000 000 CBWD) — jusqu’à publication d’une migration officielle. - Procédure de contrôle après changement autorisé: exécuter
POST /cleanup-overview,POST /cleanup-supply-devnet, puisPOST /recount-overview, et vérifierGET /overview(cohérence on-chain/off-chain).
- Mint canonique:
CBWD_MINT(décimalesCBWD_DECIMALS, par défaut 6). La supply lue est l’on-chain sur cette mint.- Devnet (origine du projet):
5bRPS8YnNMYZm6Mw86jkJMJpj9ZpCmq7Wj78gNAFnjHC(1’000’000 CBWD frappés). - Assure la cohérence:
.env,site-carbon-world/main.js,sync/.env.example,cbwd-addresses.jsondoivent tous pointer vers cette mint.
- Devnet (origine du projet):
- Événements comptabilisés si et seulement si
tx_hashnon nul (signé on-chain): totauxtotal_minted/total_burnedettotal_mints/total_burnsdérivés decarbon_events. - Tables Supabase:
carbon_supply:upsert(mint_address=current_supply,last_update)après chaque txcarbon_overview: recomptage via/recount-overviewaprès chaque tx
- Nettoyage (si doublons de mint visibles dans Supabase):
POST /cleanup-overviewavec{ keepMint: CBWD_MINT }pour garder une seule ligne.POST /cleanup-supply-devnetavec{ keepMint: CBWD_MINT }pour la tablecarbon_supply.- Puis
POST /recount-overviewpour régénérer les compteurs.
- Échelle d’impact indicative (base units CRBN):
- Local (ville): 1K–10K | Régional: 10K–100K | National: 100K–1M | International: 1M–10M
- Tampon de burn (top-up): auto-mint de couverture uniquement si
BURN_SOURCE=treasury(paramètreAUTO_TOPUP_EXTRA_BPSpour marge). Sinon, aucun top-up.
- Allowlist des sources pour MINT:
POLICY_ALLOW_SOURCES(par défautsdg,un,human_rights,nature_rights). BURNest toujours autorisé;MINTest filtré par la politique (les événements dontevent_sourcen’est pas autorisé sont ignorés).NEUTRAL: aucun mouvement on-chain; l’événement reste traçable.
autoCycle:- Lit les pending, calcule déficit trésorerie vs burns; top-up mint si
burn_source=treasury. - Traite les
BURNsans condition. - Traite les
MINTuniquement s’ils passent la politique (POLICY_ALLOW_SOURCES).
- Lit les pending, calcule déficit trésorerie vs burns; top-up mint si
- Contrôles:
GET /auto/statusexpose intervalle, limites,burn_source,policy_allow_sources;POST /auto/runforce un cycle.
POST /apply-decision→ applique une décision unique{decision, amount_crbn, event_id?}POST /process-pending→ traite la file (MINT/BURN) avec limiteGET /pending-summary→ compte et somme des pending, solde trésorerieGET /overview→ adresses, soldes, liens explorer et métriquesPOST /recount-overview→ recompute l’overview depuiscarbon_eventsPOST /normalize-pending-mint→ fusionne doublons MINT pending en un seulPOST /cleanup-supply-devnet→ garde une seule ligne supply pour la mint DevnetPOST /mint-split→ mint réparti (user/treasury/ops/payroll) selon BPSGET /policy/status→ expose l’allowlist et le mode strict
- Identités & réseau:
SOLANA_RPC_URL,CBWD_MINT,CBWD_DECIMALS - Autorités & comptes:
MINT_AUTHORITY_SECRET_KEY,TREASURY_TOKEN_ACCOUNT,TREASURY_OWNER_SECRET_KEY,OPS_TOKEN_ACCOUNT,PAYROLL_TOKEN_ACCOUNT,PAYER_SECRET_KEY - Politique & exécution:
BURN_SOURCE=treasury|ops|payroll,POLICY_ALLOW_SOURCES,POLICY_BURN_ALLOWED_SOURCES(joker*accepté),POLICY_STRICT_BURN,AUTO_ENABLED,AUTO_INTERVAL_MS,AUTO_BURN_LIMIT,AUTO_MINT_LIMIT,AUTO_TOPUP_EXTRA_BPS - Split BPS:
OPS_BPS,PAYROLL_BPS,BURN_BUFFER_BPS(10000 = 100%) - Supabase:
SUPABASE_URL,SUPABASE_KEY(service role ou anon selon besoin)
- Créer une mint + ATA trésorerie et auto-écrire
.env:AUTO_WRITE_ENV=true node sync/create_devnet_mint.js
- Lancer le serveur:
PORT=3333 BURN_SOURCE=ops DRY_RUN=false node sync/mint_burn_server.js
- Vérifier:
GET /auto/status,GET /pending-summary,GET /overview
- Décision fondée sur l’analyse du contenu (ODD/Chartes), indépendamment de la source si configuré.
- En cas d’incertitude:
NEUTRALpar défaut; (les endpoints de revue existent mais peuvent être ignorés en mode auto). - BURN peut ignorer la source si
POLICY_BURN_ALLOWED_SOURCES='*';POLICY_STRICT_BURN=trueexigeactor_typestate|institution. - Voir
docs/policy.mdpour les détails et la configuration (POLICY_ALLOW_SOURCES,POLICY_BURN_ALLOWED_SOURCES,POLICY_STRICT_BURN).
- Conseils/validateurs: revue, arbitrage, publication des justifications.
- Triggers de suivi: annonces conditionnelles ⇒
NEUTRALjusqu’à implémentation; réévaluation périodique.
- Ne jamais committer les secrets (
.env). BURN_SOURCEet la politique garantissent prudence opérationnelle.- En cas d’anomalie, droit de veto technique: bascule en
DRY_RUNet/OU suspension auto-run.
CONTRIBUTING.mdpour les pratiques et la cohérence.docs/policy.mdpour la politique et l’allowlist.docs/api.mdpour les endpoints et exemples.
- v0.1 (2025-10-21) — Baseline documentation
- Refonte README avec règles IA, supply/policy, API et configuration.
- Ajout
CONTRIBUTING.mdet docs de base (docs/policy.md,docs/api.md). - Mise à jour
sync/.env.exampleavecPOLICY_ALLOW_SOURCES,BURN_SOURCE,AUTO_TOPUP_EXTRA_BPS. - Ajout bloc
.envd’exemple dansdocs/policy.md(policy + auto-run).
Ce README définit les règles, la supply, les calculs et la politique par défaut pour assurer simplicité, solidité et durabilité. Toute évolution doit maintenir la cohérence: on-chain comme off-chain.
- Static site:
8080 - API serveur (mint/burn):
3333uniquement
- Lancer le site statique:
cd site-carbon-world && python3 -m http.server 8080 - Lancer le serveur API:
PORT=3333 AUTO_ENABLED=true node sync/mint_burn_server.js
Politique de ports: ne pas lancer d’autres instances sur 3334/3335.