Security News
Weekly Downloads Now Available in npm Package Search Results
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
poh-contracts
Advanced tools
Set of convenient utilities for verifying proof-of-humanity on-chain within Solidity smart contracts.
Proof-of-Humanity is signed proof that the transaction sender is a human rather than a bot. We are trusting the proof signer (validator) that they did use some method to prove sender humanity off-chain. That could be a CAPTCHA, biometric verification, and so on. Now we can check the validity and uniqueness of this proof on-chain before processing the transaction.
See also:
Proof-of-HUMANity on-chain: protect your smart contracts from bots
Proof-of-Humanity hCaptcha Validator API
This is a basic abstract contract you should inherit from. It exposes the following API:
setHumanityValidator(<address>)
– sets the address of the humanity validator you trust. Usually, this is the address of the account used to sign proof-of-humanity in the backend server you are in control or trust. Here is an example server for hCaptcha.
Validator could be set either in contract
constructor
, or later, by the contract owner.
basicPoH(<proof>)
– ensures that the basic
proof is valid and never seen before.
sovereignPoH(<proof>)
– ensures that the sovereign
proof is valid and never seen before.
If the proof is invalid, transaction is rejected.
proof
must be provided as a parameter for a modified method (example).
Two types of proof-of-humanity are supported: basic
and sovereign
.
The basic proof is 101 bytes long. It is a random challenge and a timestamp signed by a trusted validator.
random challenge | timestamp | validator signature
32 bytes | 4 bytes | 65 bytes
Sovereign proof includes the signature of the transaction sender over the random challenge. This is useful if you want the proof to be tightened to the sender's address. The sovereign proof is 166 bytes long.
random challenge | sender signature | timestamp | validator signature
32 bytes | 65 bytes | 4 bytes | 65 bytes
npm install poh-contracts
HumanOnly.sol
contract`import "poh-contracts/contracts/HumanOnly.sol";`
HumanOnly
contract MyContract is HumanOnly
constructor() {
setHumanityValidator(0x...);
}
This is the address used to sign proofs on a backend server you trust.
proof
parameter and one of the PoH modifiersfunction doSomethingImpotant(bytes calldata proof) public basicPoH(proof)
Ensure to provide a valid
proof
when calling this function from your dApp.
Alex Bakoushin
MIT
FAQs
Solidity contracts for verifying proof-of-humanity on-chain
The npm package poh-contracts receives a total of 1 weekly downloads. As such, poh-contracts popularity was classified as not popular.
We found that poh-contracts demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Security News
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.