Newton’s `PolicyClient` ka masla mujhe bhi shuru me samajh nahi aya tha.
Main bhi yahi samajhta tha ke bas `Policy` contract ka address set kar do aur kaam ho jayega. Mene bhi pehle din 3 ghante isi wajah se zaya kiye. Client connected show ho raha tha, address bhi theek tha, lekin jab bhi `validateAttestation()` call karta to har bar fail.
Phir docs dobara parhi to samajh aya: Newton ne 2 steps ko bilkul alag rakha hai.
*1. `_setPolicyAddress()` = "Contract ka number save karna"*
Ye sirf Policy contract ka address store karta hai. Ye na configuration register karta hai na `policyId` return karta hai. Docs me bhi likha hai. Ye bas itna hai ke client ko pata chal jaye kis contract se baat karni hai.
*2. `registerPolicy()` = "Asal me account banana"*
Ye step Policy contract ke andar config register karta hai aur ek `policyId` wapas deta hai. Isi `policyId` ke baghair validation ho hi nahi sakti.
Is liye client "connected" lagta hai lekin validate nahi karta. Kyunki `policyId` hi nahi hai.
`validateAttestation(attestation, policyId)` ke liye 2 cheezen chahiye:
1. `policyId` Policy contract me exist kare
2. Attestation us policy ke rules se match kare
Agar step 2 skip kar diya to policyId 0 rahega aur har attestation fail.
*Fix:*
policyClient.setPolicyAddress(policyContract);
uint256 policyId = policyClient.registerPolicy(config);
policyClient.validateAttestation(attestation, policyId);
Pehle address, phir policyId, phir validation.
Meri tarah time zaya na karna. Pehle `policyId` log kar ke check kar lena.
#newton $NEWT #NewtonProtocol