Coder Social home page Coder Social logo

kinetic's Introduction

Kinetic

Kinetic is an open-source suite of tools that make it easy to build apps that integrate Solana.

It provides a consistent and clean abstraction over the Solana SDKs and enhances it with some commonly requested features like paying Solana fees on behalf of the user, tracking and timing the users transactions and sending out webhooks.

Kinetic is aimed at developers that want to build crypto-experiences for the users of their app, hiding a lot of the details about the blockchain out of sight for both the developer and the end user.

Using Kinetic

See how to use Kinetic in your TypeScript app here.

Or use one of our other SDKs:

Learn more about Kinetic here.

Contributing

If you want to contribute to Kinetic, use the following steps to get started with a local development environment:

Requirements

You need to have the following tools installed on your machine:

  • Node.js 16+
  • Docker 20+
  • Yarn v1.22+

Getting started

git clone [email protected]:kin-labs/kinetic.git
cd kinetic
yarn install

Development setup

Start Services

yarn dev:services

Start the Api

yarn dev:api

Start the Web UI

yarn dev:web

Building the project

You can build the app into a production build:

yarn build

After that, you can run the production app:

yarn start

Testing the project

Use this command to the e2e test of the API:

nx e2e api-e2e

Use this command to the e2e test of the SDK:

nx e2e sdk-e2e

Use this command to run a unit test of one of the projects in the workspace:

nx test api-core-feature

Or in watch mode:

nx test api-core-feature --watch

Run the unit tests on all the projects.

nx run-many --target test --all

What If I Get Stuck?

Pop into the #kinetic-general channel on our Discord, and we'll give you a hand!

kinetic's People

Contributors

beeman avatar ramirezalex avatar richardmands avatar showered avatar

kinetic's Issues

Durable nonces for reliable transactions

blockheight that goes into each transaction expires after every 2 minutes. Nonce accounts are used to create a hash that is unique to that transaction and will provide for reliable failure and retry capabilities. The nonce is unique to the transaction, whereas the current retries are prone to failure and duplicate transactions.

from Kin-labs: Improve support for multiple token accounts, and handling transfers to tokens or mints

see comments from kin-labs#507

  • The makeTransfer method should accept a ownerTokenAccount?: string
    • It is used to decide which token account to send from if the owner has multiple.
    • When provided, there should be a check if this token account exists, and of the provided owner is in fact the owner.
    • This will allow users to empty any double token accounts, which can then be closed
  • The makeTransfer method should accept a destinationTokenAccount?: string
    • It is used to decide which token account to send to if the destination has multiple.
    • When provided, there should be a check if this token account exists, and of the provided owner is in fact the destination.
  • makeTransfer should fetch token accounts using the getAccountInfo method instead of using getAssociatedTokenAddress
  • Improve logic that prevents sending to mints
  • Improve logic that prevents sending to token accounts directly (eg, one should always pass in the owner).
  • The closeAccount method should allow a tokenAccount?: string

from Kin-labs: Checklist for Kinetic Beta

Priority 1 (Beta)

Priority 2 (Pre-release)

Priority 3 (Release)

TODO

from Kin-labs: implement Webhooks

  • Add properties webhookSecret, webhookEventUrl and webhookVerifyUrl to App model

  • Make sure that webhookEventUrl and webhookVerifyUrl are actually URLs

  • Add Admin UI to manage these settings

  • Add system to capture incoming webhooks

  • Trigger a Verify webhook to verify if a createAccount and makeTransfer operation will be executed

  • Trigger a Event webhook after the event executed.

Support for Ledger device

Kinetic MakeTransfer() only accepts KeyPair object so signing with a ledger doesnt work. It should instead had a make transfer interface that should allow you to sign with a ledger

BUG: use of float in python SDK causes 500 errors

Use of float for kin amount in python causes 500 errors.

Found by @geoffwhittington using the python SDK

File "/home/geoff/projects/perk_payments/backend/.pyenv/lib/python3.10/site-packages/kinetic_sdk/generated/client/rest.py", line 306, in POST return self.request( File "/home/geoff/projects/perk_payments/backend/.pyenv/lib/python3.10/site-packages/kinetic_sdk/generated/client/rest.py", line 238, in request raise ServiceException(http_resp=r) kinetic_sdk.generated.client.exceptions.ServiceException: Status Code: 500 Reason: Internal Server Error HTTP response headers: HTTPHeaderDict({'Content-Length': '52', 'Content-Type': 'application/json; charset=utf-8', 'Date': 'Wed, 31 Jan 2024 04:57:54 GMT', 'ETag': 'W/"34-rlKccw1E+/fV8niQk4oFitDfPro"', 'Vary': 'Origin', 'X-Powered-By': 'Express'}) HTTP response body: {"statusCode":500,"message":"Internal server error"}

from Kin-labs: Improve error message when CreateAccount is ran twice (account already exists)

The createAccount method in the SDK should check if an account is already created, then throw a descriptive error.

We can use the same check we use in the makeTransfer method, where we check if a destination already exists.

BUG: Copy button next to wallet in toolbox doesn't copy

Copy button next to wallet in toolbox doesn't copy. To recreate this behavior:

  1. Click any app from Kinetic dashboard
  2. Click on "wallets" tab
  3. Click on "copy" icon next to wallet and attempt to paste into notepad. You will notice that it doesn't copy

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.