Coder Social home page Coder Social logo

kommitters / stellar_base Goto Github PK

View Code? Open in Web Editor NEW
5.0 4.0 11.0 1.2 MB

Low-level elixir library to read, write, hash, and sign XDR primitive constructs used in the Stellar network

Home Page: https://hex.pm/packages/stellar_base

License: MIT License

Elixir 100.00%
elixir elixir-lang stellar stellar-network blockchain crypto hacktoberfest

stellar_base's People

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

stellar_base's Issues

Dialyzer integration

Context

Dialyzer is a static analysis tool that identifies software discrepancies, such as definite type errors, code that has become dead or unreachable because of a programming error, and unnecessary tests, in single Erlang modules or entire (sets of) applications.

Objective

  • To integrate Dialyzer into the development toolset.

Checklist

  • Dialyzer setup
  • Solve reported warnings
  • Integrate Dialyzer with the CI

Group XDR constructions as stellar-core does

Context

Some XDR constructions are not properly located, since there is a standard to organize these XDR files a good enhancement is to group files in the same way Stellar does.

Objective

  • To re-organize files and use the grouping mechanism used in stellar-core

XDR Types

ℹ️ This issue is an Epic

Context

XDR, also known as External Data Representation, is used throughout the Stellar network and protocol. The ledger, transactions, results, history, and even the messages passed between computers running stellar-core are encoded using XDR.

Objective

To build the XDR types and implement their encode/decode functions.

Checklist

AccountEntry

ℹ️ This issue is part of the Epic #14

Objective

Implement the account entry type.

Checklist

  • Signers list type
  • Account entry type

HTTP client behavior

ℹ️ This issue is part of the Epic #1

Objective

To define an elixir behavior to implement any HTTP client even a custom one.

Increase test coverage

Context

The Coveralls service notified the current test coverage for the library is 88%.

Objective

  • Increase the test coverage up to 100%

HTTP client test suite

ℹ️ This issue is part of the Epic #1

Objective

To add the respective tests for the HTTP client behaviour, the hackney implementation and the Horizon boundary

Initial hex.pm release

ℹ️ This issue is part of the Epic #26

Checklist

  • Add repo badges
  • Add ex_doc dependency
  • Publish version v0.1.0 to hex.pm

Add Library docs

ℹ️ This issue is part of the Epic #26

Checklist

  • README
  • LICENSE
  • CODE OF CONDUCT
  • CONTRIBUTING
  • CHANGELOG
  • GITHUB FUNDING

AccountEntryExtensionV2

ℹ️ This issue is part of the Epic #14

Objective

Implement the account ledger entry extension V2 type, which records sponsorship related information.
The sponsorship mechanism deals with a security flaw with the payment of account reserves. Details on this feature can be found at https://github.com/stellar/stellar-protocol/blob/master/core/cap-0033.md.

Checklist

  • AccountIDList A list of account IDs required to hold a reference to an account's sponsors
  • AccountEntryExtensionV2

Replace TransactionExt with Ext

Context

Ext is a base XDR type widely used by other XDR constructions, not just for Transactions.

Objective

  • To use a better XDR type declaration

Ed25519 KeyPairs and Signatures

ℹ️ This issue is an Epic

Context

Stellar uses signatures as authorization. Transactions always need authorization from at least one public key in order to be considered valid.

Transaction signatures are created by cryptographically signing the transaction object content with a secret key. Stellar uses the ed25519 signature scheme.

Objective

  • To implement an Ed25519 algorithm that allows encoding/decoding/deriving key pairs and signing transactions.

Checklist

  • #17 KeyPair behaviour + Default Ed25519 functions. (This will allow people to use their own crypto module)
  • #71

Split nested XDR types into their own files

Context

Looking for a specific XDR type nested in a parent file (Integers, Unsigned Integers, Opaques) is hard. As part of keeping an organization code across the project, it is a better approach to hold every XDR type into its own file.

Objective

  • To create single files for every XDR type.

Refactor Operation module

Context

The new/2 function arguments are not ordered as expected, making it difficult to chain this function with pipe operators

Objective

  • To change the order of the arguments in the module.

XDR Operations types

ℹ️ This issue is part of the Epic #8

Objective

To implement the XDR Operations types specified in https://github.com/stellar/stellar-core/blob/master/src/xdr/Stellar-transaction.x

Checklist

  • Create account
  • Payment
  • Path payment strict receive
  • Manage sell offer
  • Create passive sell offer
  • Set options
  • Change trust
  • Allow trust
  • Account merge
  • Inflation
  • Manage data
  • Bump sequence
  • Manage buy offer
  • Path payment strict send
  • Create claimable balance
  • Claim claimable balance
  • Begin sponsoring future reserves
  • End sponsoring future reserves
  • Revoke sponsorship
  • Clawback
  • Clawback claimable balance
  • Set trust line flags
  • Liquidity pool deposit
  • Liquidity pool withdraw

Fix issue decoding transactions

Context

StellarBase can't decode a specific transaction despite, the Stellar laboratory flags it as a valid transaction.

"AAAAAJuOuviWOFUdz56k90MgcRBrh6sOLbPWm3WlOCJy91nYAAAAZAAAAAAAvGFOAAAAAQAAAAAAAAB7AAAAAAAAAUEAAAACAAAAAAAAMDkAAAADAAAAAQAAAACbjrr4ljhVHc+epPdDIHEQa4erDi2z1pt1pTgicvdZ2AAAAAMAAAABQlRDTgAAAABy1bKQYhu6molElZp8zcbdu62YIdIlCkwZ1LNJigLjdwAAAAFCVAAAAAAAAHLVspBiG7qaiUSVmnzNxt27rZgh0iUKTBnUs0mKAuN3AAAAASoF8gAAAAABAAAACgAAAAAAAAAAAAAAAQAAAACbjrr4ljhVHc+epPdDIHEQa4erDi2z1pt1pTgicvdZ2AAAAAEAAAAAm466+JY4VR3PnqT3QyBxEGuHqw4ts9abdaU4InL3WdgAAAABQlRDTgAAAABy1bKQYhu6molElZp8zcbdu62YIdIlCkwZ1LNJigLjdwAAAAEqBfIAAAAAAQAAAACbjrr4ljhVHc+epPdDIHEQa4erDi2z1pt1pTgicvdZ2AAAAAIAAAACQlRDTkVXMDAwMDAwAAAAAHLVspBiG7qaiUSVmnzNxt27rZgh0iUKTBnUs0mKAuN3AAAAAAX14QAAAAAAm466+JY4VR3PnqT3QyBxEGuHqw4ts9abdaU4InL3WdgAAAABQlQAAAAAAABy1bKQYhu6molElZp8zcbdu62YIdIlCkwZ1LNJigLjdwAAAAAADbugAAAAAAAAAAA="

image

image

XDR types for Operation Results

ℹ️ This issue is part of the Epic #8

Objective

To implement the XDR OperationResults types specified in https://github.com/stellar/stellar-core/blob/master/src/xdr/Stellar-transaction.x

Checklist

  • OperationResultCode
  • OperationResult
  • CreateAccountResultCode
  • CreateAccountResult
  • PaymentResultCode
  • PaymentResult
  • SimplePaymentResult
  • PathPaymentStrictReceiveResultCode
  • PathPaymentStrictReceiveResult
  • ManageSellOfferResultCode
  • ManageSellOfferResult
  • ManageOffer
  • ManageOfferEffect
  • SetOptionsResultCode
  • SetOptionsResult
  • ChangeTrustResultCode
  • ChangeTrustResult
  • AllowTrustResultCode
  • AllowTrustResult
  • AccountMergeResultCode
  • AccountMergeResult
  • InflationResultCode
  • InflationResult
  • ManageDataResultCode
  • ManageDataResult
  • BumpSequenceResultCode
  • BumpSequenceResult
  • ManageBuyOfferResultCode
  • ManageBuyOfferResult
  • PathPaymentStrictSendResultCode
  • PathPaymentStrictSendResult
  • CreateClaimableBalanceResultCode
  • CreateClaimableBalanceResult
  • ClaimClaimableBalanceResultCode
  • ClaimClaimableBalanceResult
  • BeginSponsoringFutureReservesResultCode
  • BeginSponsoringFutureReservesResult
  • EndSponsoringFutureReservesResultCode
  • EndSponsoringFutureReservesResult
  • RevokeSponsorshipResultCode
  • RevokeSponsorshipResult
  • ClawbackResultCode
  • ClawbackResult
  • ClawbackClaimableBalanceResultCode
  • ClawbackClaimableBalanceResult
  • SetTrustLineFlagsResultCode
  • SetTrustLineFlagsResult
  • LiquidityPoolDepositResultCode
  • LiquidityPoolDepositResult
  • LiquidityPoolWithdrawResultCode
  • LiquidityPoolWithdrawResult

Initial library release

ℹ️ This issue is an Epic

Context

Making an OSS project public at an early stage is a really important step, no matter the outcome, working in public is a gift for the community. With every commit, comment, and pull request, we are creating opportunities for others to learn, grow and contribute.

Objective

  • To release the initial library version and make the repository public.
  • To integrate a CI server.

Checklist

Horizon HTTP client

ℹ️ This issue is an Epic

Context

In order to interact with Horizon (Stellar's API), an HTTP client is required.

Objective

To build a low-level API client using hackney instead of a third-party dependency like HTTPoition.

Checklist

  • #2 HTTP client behaviour.
  • #3 Default hackney client.
  • #6 Test suite

Rename the library namespace to StellarBase

Context

Since other libraries may be written on top of the stellar_base, the Stellar namespace may cause conflicts and compilation warnings when used by multiple libraries. Using a non-blocking namespace like StellarBase may help with this inconvenience.

Objective

  • To rename the library namespace in favor of SDKs.

Decouple Ed25519 keypair implementation from StellarBase

Context

Domain-specific functions are required when implementing Stellar signatures, this is not a responsibility of the StellarBase library but the StellarSDK.

Objectives

  • To remove the Ed25519 keypair implementation.
  • To add encode/decode functions for Signatures used in the Stellar network.

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.