---
description: >-
  Plutocratic voting system that uses Humanity token for voting and proposal
  fees.
---

# HumanityGovernance

{% code title="HumanityGovernance.sol" %}
```javascript
function deposit(uint amount) public
```
{% endcode %}

Deposit tokens to the governance module in order to participate in voting.

* **amount:** The amount of tokens to deposit.

{% code title="HumanityGovernance.sol" %}
```javascript
function withdraw(uint amount) public
```
{% endcode %}

Withdraw tokens from the governance module.

* **amount:** The amount of tokens to withdraw.

{% code title="HumanityGovernance.sol" %}
```javascript
function proposeWithFeeRecipient(address feeRecipient, address target, bytes memory data) public returns (uint)
```
{% endcode %}

Propose a new action to be executed by the governance module.

* **feeRecipient:** The address to send the proposal fee too if the proposal is approved.
* **target:** The address of the target to execute.
  * HumanityRegistry ([0x4ee46dc4962c2c2f6bcd4c098a0e2b28f66a5e90](https://etherscan.io/address/0x4ee46dc4962c2c2f6bcd4c098a0e2b28f66a5e90)) to add or remove an identity to the registry.
  * HumanityGovernance ([0xdd806c4fdad2949a97fda79036cfbb8750181b37](https://etherscan.io/address/0xdd806c4fdad2949a97fda79036cfbb8750181b37)) to change the proposal fee.
* **data:** The encoded calldata to execute.
  * `add(address)` to add an identity to the registry.
  * `remove(address)` to remove an identity from the registry.
  * `setProposalFee(uint)` to change the proposal fee.

See TwitterHumanity applicant for a convenient way to propose additions to the Humanity registry.

{% code title="HumanityGovernance.sol" %}
```javascript
function voteYes(uint proposalId) public
```
{% endcode %}

Vote yes on a proposal. The proposal must be in the open vote period (2 days).

* **proposalId:** The ID of the proposal to vote on.

{% code title="HumanityGovernance.sol" %}
```javascript
function voteNo(uint proposalId) public
```
{% endcode %}

Vote no on a proposal. The proposal must be active (4 days).

* **proposalID:** The ID of the proposal to vote on.

{% code title="HumanityGovernance.sol" %}
```javascript
function removeVote(uint proposalId) public
```
{% endcode %}

Remove a vote on a proposal. The proposal must be active (4 days).

* **proposalID:** The ID of the proposal from which to remove a vote.

{% code title="HumanityGovernance.sol" %}
```javascript
function finalize(uint proposalId) public
```
{% endcode %}

Finalize a proposal.

**proposalID:** The ID of the proposal to finalize.

{% code title="HumanityGovernance.sol" %}
```javascript
function setProposalFee(uint fee) public
```
{% endcode %}

{% code title="HumanityGovernance.sol" %}
```javascript
 function getProposal(uint proposalId) external view returns (Proposal memory)
```
{% endcode %}

{% code title="HumanityGovernance.sol" %}
```javascript
function getProposalsCount() external view returns (uint)
```
{% endcode %}
