Mikä on Private Channels -operaattori?
Operaattori on luotettu, ketjussa oikeuksitettu taho, joka toimii siltana Solana Mainnetin ja yksityisen kanavaverkon välillä. Instanssin ylläpitäjä provisioi operaattorit AddOperator-komennolla, joka luo ketjuun Operator-PDA:n; ilman tätä mikään osapuoli ei voi kutsua ReleaseFunds-toimintoa. Käytännössä operaattori on organisaatio tai tiimi, joka ajaa palveluita, jotka tarkkailevat talletuksia, lyövät kanavapuolen tokeneita, havaitsevat nostot ja tilittävät varat takaisin Mainnetiin. Instanssin ajaminen tarjoaa käyttäjillesi yksityisiä, suuren volyymin siirtoja, jotka eivät näy Solana Mainnetissä, välittömän nollamaksuisen läpimenon natiivin Solana TPS:n ylittämiseksi sekä hallitun pääsynhallinnan RBAC:n kautta.
Jos olet kehittäjä, joka integroi olemassa olevaan Private Channels -instanssiin sen sijaan, että ottaisit sellaisen käyttöön, aloita Pikakäynnistyksestä.
Ennen aloittamista
Esitietovaatimukset
Kiinnitä nämä versiot isäntäkoneelle vastaamaan Docker-kuvia:
- Docker Engine 26+ (macOS Apple Silicon: ota käyttöön "Docker VMM" kohdasta Asetukset -> Virtuaalikoneasetukset)
- Node.js 24.7.0 ja pnpm 10.15.1
- Solana CLI 3.1.13 (Agave)
- Rust 1.91.0
- Yellowstone gRPC -päätepiste Devnetille (saatavilla Heliukselta, Tritonilta, QuickNodesta)
Verkkovaatimukset ja oletusporttimääritykset löytyvät
docs/TECHNICAL_REQUIREMENTS.md
-tiedostosta repositoriossa.
Asenna kiinnitetty Solana-työkaluketju ja lämmitä SBF-välimuisti:
make install-toolchain
Palvelut
Private Channels -instanssin ajaminen tarkoittaa viiden jatkuvan vastuualueen hallintaa, joista jokainen on omistettu Docker Compose -pinon erillisille konteille:
- Indeksoi Mainnet talletuksia varten -
indexer-solanatarkkailee Solana MainnetiaDeposit-tapahtumien varalta Yellowstone gRPC:n kautta;operator-solanapoimii vahvistetut talletukset ja lyö vastaavan tokenisaldon kanavaverkkoon - Indeksoi kanava nostoja varten -
indexer-private-channelkyselee kanavalta joka sekuntiWithdrawFunds-polttotapahtumien varalta ja kirjoittaa odottavat nostotietueet tietokantaan - Vapauta varat Mainnetissä -
operator-private-channelpoimii odottavat tietueet ja kutsuuReleaseFunds-toimintoa Escrow-ohjelmalla kelvollisella SMT- poissulkemistodistuksella - Hallitse SMT-juurta -
operator-private-channelkutsuuResetSmtRoot-toimintoa automaattisesti, kun puun epochit kiertyvät; ketjussa olevaverify_smt_exclusion_proof-tarkistus on viimeinen puolustuslinja luvattomia nostoja vastaan - Aja yhdyskäytävää ja auth-palvelua - yhdyskäytävä on ainoa julkinen
päätepiste kaikelle asiakkasliikenteelle; auth-palvelu (valinnainen) pakottaa
JWT/RBAC-käytännön, kun
JWT_SECRETon asetettu
Täydellinen palveluluettelo ja porttimääritykset löytyvät Konfiguraatioviitteestä.
Tietoturvahuomio: Write-node- ja read-node-portit on sidottu vain loopback-osoitteeseen (
127.0.0.1), mutta useat muut palvelut (yhdyskäytävä, auth, operaattorimittarit, Grafana, Prometheus, cAdvisor) julkaistaan oletuksena kaikille verkkoliitännöille. Katso Konfiguraatioviite täydellisestä porttitaulukosta ja suojaa nämä palomuurilla ennen julkiseen verkkoon suunnattua käyttöönottoa. RBAC kattaa vain yhdyskäytävän omat JSON-RPC-metodit, ei näitä muita palveluita.
Pääsynhallinta: Avoin vs. RBAC
Yhdyskäytävä hyväksyy oletuksena kaikki yhteydet ilman tokeneja. JWT-pohjaisen RBAC:n käyttöönottamiseksi aseta JWT_SECRET ja käynnistä pino komennolla --profile auth. Katso
Todennus & Roolit -osiosta
täydellinen konfiguraatioviite, mukaan lukien ohjeet operator-roolin provisiointiin ja
käyttäjälompakoiden rekisteröintiin.
Jos otat autentikoinnin käyttöön, lisää nämä ympäristöön ennen pinon käynnistämistä:
JWT_SECRET=<openssl rand -hex 32> # must match on gateway and auth serviceAUTH_PORT=8903
Ympäristön asennus
.env.devnet on jo seurannassa repositoriossa devnet-kohtaisilla oletusarvoilla
täytettynä; muokkaa sitä suoraan sen sijaan, että generoisit sen uudelleen .env.example-tiedostosta,
mikä ylikirjoittaisi nuo oletusarvot.
Täytä loput arvot käydessäsi läpi alla olevia käyttöönottovaiheita; osa
arvoista on saatavilla vasta käyttöönoton aikana. Salaisuudet menevät gitignore-listattuun .env-tiedostoon;
ei-salaiset muuttujat menevät .env.devnet-tiedostoon.
Salaisuudet – aseta nämä välittömästi:
POSTGRES_PASSWORD=<openssl rand -hex 32>POSTGRES_REPLICATION_PASSWORD=<openssl rand -hex 32>
Käyttöönoton aikana saatavat muuttujat:
ESCROW_INSTANCE_ID=<instance address - from Step 3>ADMIN_PRIVATE_KEY=<operator keypair as u8 array or base58 - from Step 4>DEVNET_RPC_URL=https://api.devnet.solana.comDEVNET_YELLOWSTONE_ENDPOINT=<your Yellowstone gRPC endpoint>INDEXER_YELLOWSTONE_TOKEN=<your Yellowstone auth token>
ADMIN_PRIVATE_KEY on off-chain-palveluiden oma pakollinen maksajan allekirjoittaja,
eikä se liity vaiheessa 3 määriteltyyn ketjussa olevaan instanssin ylläpitäjään. Tässä oppaassa
vaiheessa 4 generoitu operaattori-keypair asetetaan ADMIN_PRIVATE_KEY-muuttujaan ja
valinnainen OPERATOR_PRIVATE_KEY jätetään asettamatta, jolloin operaattorin allekirjoittaja
käyttää samaa avainta. Älä koskaan laita vaiheen 3 protokollatason instanssin ylläpitäjän keypairia
kumpaan kumpaakaan muuttujaan.
Täydellinen ympäristömuuttujien viite löytyy Konfiguraatiosta.
Käyttöönotto
Rakenna kuvat
make docker-devnet-build
Tämä kääntää kaikki Rust-palvelut jaettuun Docker-kuvaan. Ensimmäinen rakennus kestää 30 minuutista tuntiin.
Asenna Admin UI
Admin UI on selainpohjainen työkalu escrow-instanssin luomiseen ja konfigurointiin:
se on kehitys- ja hallintaapuväline, ei käyttäjille suunnattu tuote
eikä pakollinen ajonaikainen komponentti. Kaikki sen suorittamat toiminnot
(CreateInstance, AllowMint, AddOperator) voidaan suorittaa myös repositorion
CLI-skriptien kautta.
cd admin-uipnpm installecho "PRIVATE_CHANNEL_RPC_URL=http://localhost:8899" > .envpnpm dev # opens at http://localhost:5173
Luo escrow-instanssi
- Aseta selainlompakkosi Devnet-verkkoon ja varmista, että sinulla on Devnet SOL maksuja varten
- Klikkaa Admin UI:ssa Luo uusi instanssi ja hyväksy transaktio
- Kopioi Instanssin osoite ja aseta se
ESCROW_INSTANCE_ID-muuttujaksi.env.devnet-tiedostoon
Vaihtoehtoisesti käytä CLI-skriptiä:
cargo run --bin create_instance -- https://api.devnet.solana.com ./keypairs/admin.json
Generoi operaattorin keypair
solana-keygen new -o operator-keypair.json -s --no-bip39-passphrasesolana-keygen pubkey operator-keypair.json
Aseta keypair-sisältö ADMIN_PRIVATE_KEY-muuttujaksi ympäristössäsi. Julkinen
avain ei ole ympäristömuuttuja; se välitetään suoraan operaattorin pubkeyna
jäljempänä olevassa "Konfiguroi instanssi" -vaiheessa.
Viimeistele ympäristömuuttujat
Päivitä .env.devnet muuttujilla ESCROW_INSTANCE_ID, DEVNET_RPC_URL,
DEVNET_YELLOWSTONE_ENDPOINT ja INDEXER_YELLOWSTONE_TOKEN. Laita salaisuudet
(POSTGRES_PASSWORD, POSTGRES_REPLICATION_PASSWORD, ADMIN_PRIVATE_KEY)
gitignore-listattuun .env-tiedostoon.
Jos päätit ottaa RBAC:n käyttöön
(Pääsynhallinta: Avoin vs. RBAC), lisää myös
JWT_SECRET ja AUTH_PORT nyt.
Käynnistä kaikki palvelut
Ilman autentikointia:
make docker-devnet-up
Autentikoinnin kanssa:
docker compose -f docker-compose.devnet.yml --env-file versions.env --env-file .env.devnet --env-file .env --profile auth up -d
Compose poistaa käytöstä automaattisen .env-latauksen, kun jokin --env-file-lippu
on annettu, joten loppuun lisätty --env-file .env on pakollinen. Ilman sitä
POSTGRES_PASSWORD, ADMIN_PRIVATE_KEY ja JWT_SECRET (jotka laitoit
.env-tiedostoon) jäävät tyhjiksi ja pino epäonnistuu käynnistyksessä.
Käynnistä palvelut ennen instanssin konfigurointia. Indekseri suoratoistaa tapahtumia reaaliajassa, joten pinon käynnistäminen ensin varmistaa, että
AllowMintja ensimmäinen talletuksesi indeksoidaan järjestyksessä ilman täydennyshakua.
Konfiguroi instanssi
Pinon ollessa käynnissä, lisää token mint sallittujen listalle ja lisää operaattorisi Admin UI:n kautta:
- Salli Mint: Ylläpitäjätoiminnot -> Mint-hallinta -> syötä mint-osoite -> Salli Mint
- Lisää operaattori: Ylläpitäjätoiminnot -> Operaattorien hallinta -> syötä operaattorin pubkey -> Lisää operaattori
Tai CLI:n kautta:
cargo run --bin add_operator -- \https://api.devnet.solana.com \./keypairs/admin.json \<INSTANCE_ID> \<OPERATOR_PUBKEY>
Tämä opas kohdistuu Solana devnetiin. Mainnetille:
- Ohjelman tunnisteet käännetään sisään
declare_id!()-makrolla: varmista, että käytät oikeita Mainnet-tunnuksia repositoriosta - Yellowstone gRPC -päätepisteet vaativat Mainnet-suunnitelman; devnet-päätepisteet eivät suoratoista Mainnet-tapahtumia
- Operaattorilompakko maksaa SOL-maksut jokaisesta
ReleaseFunds-kutsusta, joten mitoita SOL-saldo odotetun nostomääräsi mukaan - Vaihda kaikki oletustunnukset (Grafana, PostgreSQL) ennen julkiseen verkkoon suunnattua käyttöönottoa
Ylläpitotoiminnot
Hyödyllisiä komentoja
# View logs (all services)make docker-devnet-logs# View logs (specific service)docker compose -f docker-compose.devnet.yml --env-file versions.env --env-file .env.devnet logs -f indexer-solana# Stop servicesmake docker-devnet-down# Stop and wipe all state (volumes)make docker-devnet-clean
Havainnointikyky
Pino sisältää Prometheuksen, Grafanan ja cAdvisorin mittareita ja konttien
seurantaa varten. Grafana on käytettävissä portissa 37429.
Grafanan oletussalasana on admin. Vaihda se ennen kuin avaat portin 37429
muulle verkolle kuin localhostille.
Vianmääritys
Kanavan saldo ei päivity talletuksen jälkeen
- Varmista, että Mainnet-talletustransaktio näkyy Mainnet-selaimessa
- Varmista, että
indexer-solanaon käynnissä:docker compose -f docker-compose.devnet.yml --env-file versions.env --env-file .env.devnet logs -f indexer-solana - Varmista, että
operator-solanaon käynnissä:docker compose -f docker-compose.devnet.yml --env-file versions.env --env-file .env.devnet logs -f operator-solana - Tarkista, että Yellowstone gRPC -päätepisteesi on tavoitettavissa ja token on kelvollinen
(
DEVNET_YELLOWSTONE_ENDPOINT,INDEXER_YELLOWSTONE_TOKEN) - Odota enintään 30 sekuntia ketjussa tapahtuvan vahvistuksen jälkeen, sillä indekseri soveltaa lopullisuuden turvaviivettä ennen hyvitystä
Nosto ei tiliinty Mainnetiin
- Varmista, että
indexer-private-channelon käynnissä:docker compose -f docker-compose.devnet.yml --env-file versions.env --env-file .env.devnet logs -f indexer-private-channel - Varmista, että
operator-private-channelon käynnissä:docker compose -f docker-compose.devnet.yml --env-file versions.env --env-file .env.devnet logs -f operator-private-channel - Varmista, että
ADMIN_PRIVATE_KEY-muuttujan operaattorin keypair vastaaAddOperator-komennolla ketjuun rekisteröityä avainta - Jos lokit näyttävät "SMT root mismatch" -virheen, palvelu sammuttaa itsensä sen sijaan, että lähettäisi virheellisen todistuksen. Pysäytä pino, palauta johdonmukaisesta tilasta ja käynnistä uudelleen
JWT-todennusvirheet (401 kaikissa pyynnöissä)
- Varmista, että
JWT_SECRETon täsmälleen sama sekä yhdyskäytävän että auth-palvelun konteissa - Varmista, että pino käynnistettiin
--profile auth-lipulla - Tokenit vanhenevat 24 tunnin jälkeen; todenna uudelleen saadaksesi uuden tokenin
Ensimmäinen rakennus kestää liian kauan
Tämä on odotettua. Ensimmäinen make docker-devnet-build kääntää kaikki Rust-palvelut ja
voi kestää 30–60 minuuttia tyypillisellä laitteistolla. Myöhemmät rakennukset käyttävät Docker-kerrosvälimuistia
ja ovat huomattavasti nopeampia.
Seuraavat vaiheet
Is this page helpful?