Namen
EntropyOracle periodično zapisuje naključnost, pridobljeno iz PulseChain validatorjev prek block.prevrandao. Vsak zapis je shranjen z entropyHash, iz katerega se izračuna nonce, uporabljen pri gradnji commitmenta za mint.
Kako deluje
- Oracle servis (Node.js, ethers v6) teče 24/7 na Railwayju.
- Mainnet: commit približno vsakih ~2500 blokov.
- Testnet: commit približno vsakih ~50 blokov.
- GitHub → Railway samodejni redeploy ob push na
main.
Izračun nonce
// r_field = BN254 scalar field
const r_field = 21888242871839275222246405745257275088548364400416034343698204186575808495617n;
const nonce = BigInt(rec.entropyHash) % r_field;
Commitment
Commitment, ki ga registrira UORS in ga stranka dokaže z ZK, je:
commitment = Poseidon2([pk, nonce])
kjer je pk zasebni ključ, izpeljan iz 6 besed (wordsToPrivateKey), nonce pa izhaja iz zadnjega oracle zapisa.
Če RPC vrne null za blok (Cannot read properties of null (reading 'prevRandao')), oracle samodejno nadaljuje — to ni kritično.