Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuração do Projeto CRE

Vamos criar seu primeiro projeto CRE do zero usando o CLI.

Passo 1: Inicializar Seu Projeto

Abra seu terminal e execute:

cre init

Você verá o assistente de inicialização do CRE:


      ÷÷÷                                          ÷÷÷
   ÷÷÷÷÷÷                                          ÷÷÷÷÷÷
÷÷÷÷÷÷÷÷÷                                          ÷÷÷÷÷÷÷÷÷
÷÷÷÷÷÷       ÷÷÷÷÷÷÷÷÷÷  ÷÷÷÷÷÷÷÷÷÷  ÷÷÷÷÷÷÷÷÷÷       ÷÷÷÷÷÷
÷÷÷÷÷÷       ÷÷÷÷÷÷÷÷÷÷  ÷÷÷÷÷÷÷÷÷÷  ÷÷÷÷÷÷÷÷÷÷       ÷÷÷÷÷÷
÷÷÷÷÷÷       ÷÷÷÷    ÷÷÷ ÷÷÷   ÷÷÷÷  ÷÷÷              ÷÷÷÷÷÷
÷÷÷÷÷÷       ÷÷÷         ÷÷÷÷÷÷÷÷÷   ÷÷÷÷÷÷÷÷÷÷       ÷÷÷÷÷÷
÷÷÷÷÷÷       ÷÷÷         ÷÷÷÷÷÷÷÷    ÷÷÷÷÷÷÷÷÷÷       ÷÷÷÷÷÷
÷÷÷÷÷÷       ÷÷÷÷    ÷÷÷ ÷÷÷  ÷÷÷÷   ÷÷÷              ÷÷÷÷÷÷
÷÷÷÷÷÷       ÷÷÷÷÷÷÷÷÷÷  ÷÷÷   ÷÷÷÷  ÷÷÷÷÷÷÷÷÷÷       ÷÷÷÷÷÷
÷÷÷÷÷÷       ÷÷÷÷÷÷÷÷÷÷  ÷÷÷    ÷÷÷÷ ÷÷÷÷÷÷÷÷÷÷       ÷÷÷÷÷÷
÷÷÷÷÷÷÷÷÷                                          ÷÷÷÷÷÷÷÷÷
   ÷÷÷÷÷÷                                          ÷÷÷÷÷÷
      ÷÷÷                                          ÷÷÷

Create a new CRE project

  Project name
  Name for your new CRE project

  > my-project

Digite: hello-world e pressione Enter.

Pick a template
  All    Go   [TS]

Pressione Tab até selecionar TS (Typescript).

│ Hello World TS
│ A minimal cron-triggered workflow to get started from scratch
│ cron

Selecione Hello World TS e pressione Enter.

Create a new CRE project

  Project: prediction-market
  Template: Hello World (TypeScript) [typescript]

  Workflow name
  Name for your workflow

  > my-workflow

Pressione Enter para aceitar o nome padrão my-workflow.

🎉 Project created successfully!

Next steps:
  cd hello-world
  bun install --cwd ./my-workflow
  cre workflow simulate my-workflow

Passo 2: Navegar e Instalar Dependências

Siga as instruções do CLI:

cd hello-world
bun install --cwd ./my-workflow

Você verá o Bun instalando o CRE SDK e as dependências:

bun install v1.3.12 (700fc117)

+ typescript@5.9.3
+ @chainlink/cre-sdk@1.5.0

25 packages installed [7.67s]

Passo 2.5: Configurar Variáveis de Ambiente

O comando cre init cria um arquivo .env na raiz do projeto. Este arquivo será usado tanto pelos workflows CRE quanto pelo Foundry (para deploy de smart contracts).

Veja o .env:

###############################################################################
### REQUIRED ENVIRONMENT VARIABLES - SENSITIVE INFORMATION                  ###
### DO NOT STORE RAW SECRETS HERE IN PLAINTEXT IF AVOIDABLE                 ###
### DO NOT UPLOAD OR SHARE THIS FILE UNDER ANY CIRCUMSTANCES                ###
###############################################################################

# Ethereum private key or 1Password reference (e.g. op://vault/item/field)
CRE_ETH_PRIVATE_KEY=YOUR_PRIVATE_KEY_HERE

# Default target used when --target flag is not specified (e.g. staging-settings, production-settings, my-target)
CRE_TARGET=staging-settings

⚠️ Aviso de Segurança: Nunca faça commit do seu arquivo .env ou compartilhe suas chaves privadas! O arquivo .gitignore já exclui arquivos .env.

Hoje não faremos transações on-chain, então você não precisa atualizar o CRE_ETH_PRIVATE_KEY.

Passo 3: Explorar a Estrutura do Projeto

Vamos ver o que o cre init criou para nós:

prediction-market/
├── project.yaml            # Configurações do projeto
├── secrets.yaml            # Mapeamento de variáveis secretas
├── .env                    # Variáveis de ambiente
└── my-workflow/            # Diretório do seu workflow
    ├── workflow.yaml       # Configurações específicas do workflow
    ├── main.ts             # Ponto de entrada do workflow ⭐
    ├── config.staging.json # Configuração para simulação
    ├── package.json        # Dependências Node.js
    └── tsconfig.json       # Configuração TypeScript

Arquivos Principais Explicados

ArquivoFinalidade
project.yamlEndpoints RPC para acesso à blockchain
secrets.yamlMapeia variáveis de ambiente para secrets
.envVariáveis de ambiente para CRE e Foundry
workflow.yamlNome do workflow e caminhos dos arquivos
main.tsSeu código de workflow fica aqui
config.staging.jsonValores de configuração para simulação

Passo 4: Executar Sua Primeira Simulação

Agora a parte emocionante - vamos simular o workflow:

cre workflow simulate my-workflow

Você verá o simulador inicializar:

[SIMULATION] Simulator Initialized

[SIMULATION] Running trigger trigger=cron-trigger@1.0.0
[USER LOG] Hello world! Workflow triggered.

Workflow Simulation Result:
 "Hello world!"

[SIMULATION] Execution finished signal received

🎉 Parabéns! Você acabou de executar seu primeiro workflow CRE!

Passo 5: Entender o Código Hello World

Vamos ver my-workflow/main.ts:

// my-workflow/main.ts

import { cre, Runner, type Runtime } from "@chainlink/cre-sdk";

type Config = {
  schedule: string;
};

const onCronTrigger = (runtime: Runtime<Config>): string => {
  runtime.log("Hello world! Workflow triggered.");
  return "Hello world!";
};

const initWorkflow = (config: Config) => {
  const cron = new cre.capabilities.CronCapability();

  return [
    cre.handler(
      cron.trigger(
        { schedule: config.schedule }
      ), 
      onCronTrigger
    ),
  ];
};

export async function main() {
  const runner = await Runner.newRunner<Config>();
  await runner.run(initWorkflow);
}

main();

O Padrão: Trigger → Callback

Todo workflow CRE segue este padrão:

cre.handler(trigger, callback)
  • Trigger: O que inicia o workflow (CRON, HTTP, Log)
  • Callback: O que acontece quando o trigger dispara

Nota: O Hello World usa um CRON Trigger (baseado em tempo). Neste bootcamp, vamos construir com HTTP Trigger (Dia 2) e Log Trigger (Dia 3) para nosso mercado de previsão.

Referência de Comandos

ComandoO Que Faz
cre initCria um novo projeto CRE
cre workflow simulate <nome>Simula um workflow localmente
cre workflow simulate <nome> --broadcastSimula com escritas reais on-chain