Proof-of-Humanity TRON Core Component for React.
Used as a wrapper for PoH validators.
https://poh-tron-counter.bakoush.in (source code)
npm install poh-tron-reactimport { ProofOfHumanityProvider } from "poh-tron-react";
<ProofOfHumanityProvider>
<App />
</ProofOfHumanityProvider>;2. Initialize at least one PoH validator plugin (e.g. poh-validator-hcaptcha-react)
import hCaptchaValidator from "poh-validator-hcaptcha-react";
const validator = (
<HCaptchaValidator
sitekey="10000000-ffff-ffff-ffff-000000000001"
url="http://localhost:3000/api/v1/proof"
/>
);import { useProofOfHumanity } from "poh-tron-react";
const { getProofOfHumanity } = useProofOfHumanity(validator);const handleClick = () => {
try {
const { error, errorMessage, proof } = await getProofOfHumanity();
if (!error) {
await mySmartContract.someImportantMethod(proof).send({
feeLimit: 100_000_000,
callValue: 0
});
}
} catch(error) {
console.error(error);
}
}
<button onClick={handleClick}>Send transaction</button>The method in the smart contract must know how to deal with the
proof. You can leverage a Solidity library just for that: poh-tron-contracts
If you want to use sovereign PoH instead of the basic one, you have to provide additional options object to useProofOfHumanity hook.
Options object has two properties:
type– ifsovereign, the PoH component should ask the user to confirm their address ownership. The default value isbasictronWeb– specifies TronWeb API used to sign address ownership confirmation
Example:
import { useProofOfHumanity } from "poh-tron-react";
const { getProofOfHumanity } = useProofOfHumanity(validator, {
type: "sovereign",
tronWeb,
});Validator plugin component must be a React component accepting the following props:
renderLogoOnly (boolean) – if true, the component should render its own logo instead of actual validator interface
data (string) – data (a hex string) to be included into signed proof-of-humanity. Can be a random hex challege, or a random hex challenge along with address owner signature
onVerify (function) – must be called once validation is complete with the object with following keys as the only parameter:
-
error(boolean) –truein case of error; otherwisefalse -
errorMessage(string) – in case of error; otherwisenull -
proof(string): proof-of-humanity (a hex string);nullin case of error
Example plugin: hCaptcha validator
- Proof-of-HUMANity on-chain: protect your smart contracts from bots
- Proof-of-Humanity TRON Solidity Contracts
- Proof-of-Humanity TRON hCaptcha Validator API
- Proof-of-Humanity hCaptcha Validator React
- Counter dApp Example for TRON
Alex Bakoushin
MIT