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-react
import { ProofOfHumanityProvider } from "poh-tron-react";
<ProofOfHumanityProvider>
<App />
</ProofOfHumanityProvider>;
2. Initialize at least one PoH validator plugin (e.g. poh-validator-hcaptcha)
import hCaptchaValidator from "poh-validator-hcaptcha";
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 isbasic
-
tronWeb
– 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) –true
in case of error; otherwisefalse
-
errorMessage
(string) – in case of error; otherwisenull
-
proof
(string): proof-of-humanity (a hex string);null
in 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