🔑
goki
Goki is a suite of programs for Solana key management and security.
It currently features:
- Goki Smart Wallet: A wallet loosely based on the Serum implementation
- Token Signer: Allows signing transactions by holding an NFT or tokens
Note
- Goki is in active development, so all APIs are subject to change.
- This code is unaudited. Use at your own risk.
Packages
Package | Description | Version | Docs |
---|---|---|---|
smart-wallet |
Multisig Solana wallet with Timelock capabilities | ||
token-signer |
Sign transactions by owning a token | ||
@gokiprotocol/client |
TypeScript SDK for Goki |
Addresses
- Smart Wallet:
GokivDYuQXPZCWRkwMhdH2h91KpDQXBEmpgBgs55bnpH
- Token Signer:
NFTUJzSHuUCsMMqMRJpB7PmbsaU7Wm51acdPk2FXMLn
Philosophy
Goki embraces the concept of gradually increasing decentralization: ownership should be able to shift from centralized to increasingly more decentralized accounts.
Our intended use case is to:
- Use a local wallet for development, using the NFT key.
- Once the project becomes more serious, send the NFT to a Ledger or other hardware wallet.
- On mainnet/production, use the
multisig
wallet. - Once sufficient traction has been established, send the NFTs to the DAO.
Granularity
Goki also allows for granular access control: NFTs are cheap to create, so it should be possible to create an NFT for every possible ownership or role within a protocol.
NFTs also support metadata via protocols such as Metaplex, so it should be much easier to manage the different roles and permissions with visual NFT names.
Real world example: Uniswap
Imagine you have an AMM that has the following roles:
- Upgrading the "factory" contract
- Upgrading the "router" contract
- Setting protocol fees
These three roles are all very different in risk and importance.
- A factory contract is extremely sensitive, as it would affect all swaps on the platform. This should only be upgraded by the team, but in the future the keys to the contract should be "burned".
- The router is non custodial, so it should be owned by the team's multisig-- ideally one with a low threshold of execution.
- Protocol fees should be set by the DAO.
Using an NFT here makes it easier for users and the community to track and understand the transition of power as a DAO evolves.
License
Goki Protocol is licensed under the GNU Affero General Public License v3.0.
In short, this means that any changes to this code must be made open source and available under the AGPL-v3.0 license, even if only used privately. If you have a need to use this program and cannot respect the terms of the license, please message us our legal team directly at [email protected].