Skip to content

Commit

Permalink
feat: improving JS package (#12)
Browse files Browse the repository at this point in the history
  • Loading branch information
wei3erHase authored Oct 2, 2024
1 parent 22b19d4 commit 175303f
Show file tree
Hide file tree
Showing 21 changed files with 1,930 additions and 4,931 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

*/node_modules
js/lib
js/dist

/node_modules

Expand Down
59 changes: 10 additions & 49 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,4 @@
<h1 align="center">Token vesting</h1>
<br />
<p align="center">
<img width="250" src="https://i.imgur.com/nn7LMNV.png"/>
</p>
<p align="center">
<a href="https://twitter.com/bonfida">
<img src="https://img.shields.io/twitter/url?label=Bonfida&style=social&url=https%3A%2F%2Ftwitter.com%2Fbonfida">
</a>
</p>

<h1 align="center">Token staking</h1>
<br />

<div align="center">
Expand All @@ -17,59 +7,30 @@

</div>

<br />
<h2 align="center">Table of contents</h2>
<br />

1. [Program ID](#program-id)
2. [Audit](#audit)
3. [UI](#ui)
4. [Overview](#overview)
5. [Structure](#structure)

<br />
<a name="program-id"></a>
<h2 align="center">Program ID</h2>
<br />

- mainnet: `CChTq6PthWU82YZkbveA3WDf7s97BWhBK4Vx9bmsT743`
- devnet: `DLxB9dSQtA4WJ49hWFhxqiQkD9v6m67Yfk9voxpxrBs4`
- mainnet: `---TBD---`
- devnet: `3F15CLnQjHqMCHLn2g7vuDULiRuJDiEMSZQXMoVVUGtA`

<br />
<a name="audit"></a>
<h2 align="center">Audit</h2>
<br />

This code has been audited by Kudelski
This code has been audited ✅

- Audit report: [Bonfida Token Vesting Report](/audit/Bonfida_SecurityAssessment_Vesting_Final050521.pdf)

<br />
<a name="ui"></a>
<h2 align="center">UI</h2>
<br />

The [Bonfida Token Vesting UI](https://vesting.bonfida.org) can be used to unlock tokens. The UI **only** works for vesting accounts using the mainnet deployment `CChTq6PthWU82YZkbveA3WDf7s97BWhBK4Vx9bmsT743`
- Forked codebase by Kudelski: [Bonfida Token Vesting Report](/audit/Bonfida_SecurityAssessment_Vesting_Final050521.pdf)
- Modified codebase: `---TBD---`

<br />
<a name="overview"></a>
<h2 align="center">Overview</h2>
<br />

- Simple vesting contract (SVC) that allows you to deposit X SPL tokens that are unlocked to a specified public key at a certain block height/ slot.
- Unlocking works by pushing a permissionless crank on the contract that moves the tokens to the pre-specified address
- Token Address should be derived from https://spl.solana.com/associated-token-account
- 'Vesting Schedule contract' - A contract containing an array of the SVC's that can be used to develop arbitrary- vesting schedules.
- Tooling to easily setup vesting schedule contracts
- Recipient address should be modifiable by the owner of the current recipient key
- Implementation should be a rust spl compatible program, plus client side javascript bindings that include a CLI- interface. Rust program should be unit tested and fuzzed.

<br />
<a name="structure"></a>
<h2 align="center">Structure</h2>
<br />

- `js` : JavaScript binding to interact with on-chain token vesting contract
- `program` : The BPF compatible token vesting on-chain program/smart contract

![diagram](assets/structure.png)
- The codebase is a modified fork of the Bonfida Token Vesting program, into a Staking program.
- The staking contract allows you to deposit X SPL tokens that will get unlocked at a certain block height/slot.
- Allows a pre-defined list of possible time periods for staking: 0 for "unlocked", 3 mth, 6, 9, 12.
- On "unlocked" stakes, there is a 7 day withdrawal period since the user initializes the withdrawal.
1 change: 0 additions & 1 deletion js/.eslintignore

This file was deleted.

56 changes: 0 additions & 56 deletions js/.eslintrc.js

This file was deleted.

1 change: 0 additions & 1 deletion js/.prettierrc.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
arrowParens: 'avoid'
bracketSpacing: true
jsxBracketSameLine: false
semi: true
singleQuote: true
tabWidth: 2
Expand Down
4 changes: 0 additions & 4 deletions js/dist/index.d.ts

This file was deleted.

1 change: 0 additions & 1 deletion js/dist/index.js

This file was deleted.

11 changes: 0 additions & 11 deletions js/dist/instructions.d.ts

This file was deleted.

46 changes: 0 additions & 46 deletions js/dist/main.d.ts

This file was deleted.

24 changes: 0 additions & 24 deletions js/dist/state.d.ts

This file was deleted.

23 changes: 0 additions & 23 deletions js/dist/utils.d.ts

This file was deleted.

69 changes: 69 additions & 0 deletions js/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import { fixupConfigRules } from '@eslint/compat';
import globals from 'globals';
import babelParser from '@babel/eslint-parser';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import js from '@eslint/js';
import { FlatCompat } from '@eslint/eslintrc';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all
});

export default [{
ignores: ['lib', 'dist'],
}, ...fixupConfigRules(
compat.extends('eslint:recommended', 'plugin:import/errors', 'plugin:import/warnings'),
), {
languageOptions: {
globals: {
...globals.browser,
...globals.node,
},
parser: babelParser,
parserOptions: {
requireConfigFile: false,
},
ecmaVersion: 8,
sourceType: 'module',
},

settings: {
react: {
version: 'detect',
},
},

rules: {
'no-trailing-spaces': ['error'],
'import/first': ['error'],
'import/no-commonjs': ['error'],
'import/namespace': ['warn'],
'import/default': ['warn'],

'import/order': ['error', {
groups: [['internal', 'external', 'builtin'], ['index', 'sibling', 'parent']],
'newlines-between': 'always',
}],

indent: ['error', 2, {
MemberExpression: 1,
SwitchCase: 1,
}],

'linebreak-style': ['error', 'unix'],
'no-console': [0],

quotes: ['error', 'single', {
avoidEscape: true,
allowTemplateLiterals: true,
}],

'require-await': ['error'],
semi: ['error', 'always'],
},
}];
Loading

0 comments on commit 175303f

Please sign in to comment.