SwissBorgToken.sol

https://github.com/SwissBorg/borg-token/blob/master/contracts/SwissBorgToken.sol

Description

This contract represents the new BORG token. It is a simple ERC20 implementing three extensions from OpenZeppelin:
- ERC20Burnable: which allows real "burn" of the tokens, updating the total supply.
- ERC20Permit: which is a gas-less alternative to approvals
- ERC20Votes: which tracks historical balances for voting in on-chain governance, with a way to delegate one's voting power to a trusted account.
While the CHSB initial supply was hardcoded to 1 billion, the BORG initial supply will take into account the tokens sent to address(0) to not mint tokens that can't be migrated.
When created, the supply will be directly transferred to the migrator which is in charge of exchanging CHSB tokens for BORG tokens.
No roles are available on this contract.
No proxy is implemented in front of the contract.
The SwissBorgToken contract is released under the MIT license.

Functional Requirements

This is a simple ERC20 and any user should be able to interact with it as he or she would do with any token.
With ERC20Burnable, it should be possible to burn some tokens and see the totalSupply() decrease.
With ERC20Permit, it should be possible to sign permits instead of approving the token to be spent.