Skip to content
forked from GokiProtocol/goki

A suite of programs for Solana key management and security.

Notifications You must be signed in to change notification settings

sol-crystal/goki

 
 

Repository files navigation

🔑 goki

License Build Status Contributors

Banner

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 Crates.io Docs.rs
token-signer Sign transactions by owning a token crates Docs.rs
@gokiprotocol/client TypeScript SDK for Goki npm Docs

Addresses

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:

  1. Use a local wallet for development, using the NFT key.
  2. Once the project becomes more serious, send the NFT to a Ledger or other hardware wallet.
  3. On mainnet/production, use the multisig wallet.
  4. 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 team directly at [email protected].

About

A suite of programs for Solana key management and security.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 50.3%
  • Rust 44.1%
  • Shell 2.9%
  • Nix 1.9%
  • JavaScript 0.8%