cardano_wallet 0.1.1 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/nightly.yml +34 -0
- data/.github/workflows/tests.yml +5 -5
- data/README.md +13 -4
- data/Rakefile +10 -0
- data/cardano_wallet.gemspec +1 -0
- data/docker-compose-shelley.yml +27 -0
- data/lib/cardano_wallet/byron.rb +42 -0
- data/lib/cardano_wallet/shelley.rb +14 -6
- data/lib/cardano_wallet/version.rb +1 -1
- metadata +18 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 170a67d50c0941bcc6827d81d5025594aecd75fcde3736e0d28c1e11efec839f
         | 
| 4 | 
            +
              data.tar.gz: 0e4e039fac16f50a6a6bb94c381ddf4c89b14cb3ab2f09556054fc4288238c21
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 37902c4bc67884beb01bad10a4771ef1fb9cfcd7ae2a722b25e856249ba9ec92580dc076960c0b7e288729f852c2ff778589eff67f1d34465c320d0fde8b189c
         | 
| 7 | 
            +
              data.tar.gz: 5370e532f52ff2459957309d2109ae1cfebf2e99fe3332a39a5580e0d073fac69b6080a4fd1ab265f6b781ce483d17275df4609332332904aa03b0f686b37775
         | 
| @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            name: Nightly
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            on:
         | 
| 4 | 
            +
              schedule:
         | 
| 5 | 
            +
              - cron:  "0 23 * * *"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            jobs:
         | 
| 8 | 
            +
              test:
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                runs-on: ubuntu-latest
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                steps:
         | 
| 13 | 
            +
                - uses: actions/checkout@v2
         | 
| 14 | 
            +
                - name: Set up cardano-wallet
         | 
| 15 | 
            +
                  run: NODE_CONFIG_PATH=`pwd`/spec/shelley-testnet docker-compose -f docker-compose-shelley.yml up --detach
         | 
| 16 | 
            +
                - name: Set up Ruby
         | 
| 17 | 
            +
                # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
         | 
| 18 | 
            +
                # change this to (see https://github.com/ruby/setup-ruby#versioning):
         | 
| 19 | 
            +
                # uses: ruby/setup-ruby@v1
         | 
| 20 | 
            +
                  uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
         | 
| 21 | 
            +
                  with:
         | 
| 22 | 
            +
                    ruby-version: 2.6
         | 
| 23 | 
            +
                - name: Install dependencies
         | 
| 24 | 
            +
                  run: bundle install
         | 
| 25 | 
            +
                - name: Wait until node is synced
         | 
| 26 | 
            +
                  run: bundle exec rake wait_until_node_synced
         | 
| 27 | 
            +
                - name: Run all tests
         | 
| 28 | 
            +
                  run: bundle exec rspec
         | 
| 29 | 
            +
                env:
         | 
| 30 | 
            +
                  CI: true
         | 
| 31 | 
            +
                  CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
         | 
| 32 | 
            +
                  NETWORK: testnet
         | 
| 33 | 
            +
                  WALLET: dev-master-shelley
         | 
| 34 | 
            +
                  NODE: master
         | 
    
        data/.github/workflows/tests.yml
    CHANGED
    
    | @@ -21,7 +21,7 @@ jobs: | |
| 21 21 | 
             
                steps:
         | 
| 22 22 | 
             
                - uses: actions/checkout@v2
         | 
| 23 23 | 
             
                - name: Set up cardano-wallet
         | 
| 24 | 
            -
                  run: docker-compose up --detach
         | 
| 24 | 
            +
                  run: NODE_CONFIG_PATH=`pwd`/spec/shelley-testnet docker-compose -f docker-compose-shelley.yml up --detach
         | 
| 25 25 | 
             
                - name: Set up Ruby
         | 
| 26 26 | 
             
                # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
         | 
| 27 27 | 
             
                # change this to (see https://github.com/ruby/setup-ruby#versioning):
         | 
| @@ -31,11 +31,11 @@ jobs: | |
| 31 31 | 
             
                    ruby-version: 2.6
         | 
| 32 32 | 
             
                - name: Install dependencies
         | 
| 33 33 | 
             
                  run: bundle install
         | 
| 34 | 
            -
                - name: Run tests
         | 
| 35 | 
            -
                  run: bundle exec  | 
| 34 | 
            +
                - name: Run all tests except nighlty
         | 
| 35 | 
            +
                  run: bundle exec rspec . -t ~nightly
         | 
| 36 36 | 
             
                env:
         | 
| 37 37 | 
             
                  CI: true
         | 
| 38 38 | 
             
                  CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
         | 
| 39 39 | 
             
                  NETWORK: testnet
         | 
| 40 | 
            -
                  WALLET: dev-master- | 
| 41 | 
            -
                  NODE:  | 
| 40 | 
            +
                  WALLET: dev-master-shelley
         | 
| 41 | 
            +
                  NODE: master
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,3 +1,4 @@ | |
| 1 | 
            +
             | 
| 1 2 | 
             
            <a href="https://badge.fury.io/rb/cardano_wallet">
         | 
| 2 3 | 
             
              <img src="https://badge.fury.io/rb/cardano_wallet.svg" alt="Gem Version">
         | 
| 3 4 | 
             
            </a>
         | 
| @@ -10,6 +11,9 @@ | |
| 10 11 | 
             
            <a href="https://github.com/piotr-iohk/cardano-wallet-rb/actions?query=workflow%3ATests">
         | 
| 11 12 | 
             
              <img src="https://github.com/piotr-iohk/cardano-wallet-rb/workflows/Tests/badge.svg" />
         | 
| 12 13 | 
             
            </a>
         | 
| 14 | 
            +
            <a href="https://github.com/piotr-iohk/cardano-wallet-rb/actions?query=workflow%3ANightly">
         | 
| 15 | 
            +
              <img src="https://github.com/piotr-iohk/cardano-wallet-rb/workflows/Nightly/badge.svg" />
         | 
| 16 | 
            +
            </a>
         | 
| 13 17 |  | 
| 14 18 | 
             
            # cardano-wallet-rb
         | 
| 15 19 |  | 
| @@ -87,18 +91,23 @@ Refer to [documentation](https://rubydoc.info/gems/cardano_wallet) for more deta | |
| 87 91 |  | 
| 88 92 | 
             
            ## Development
         | 
| 89 93 |  | 
| 90 | 
            -
            In order to spin up environment for development and testing `docker-compose` can be used.
         | 
| 94 | 
            +
            In order to spin up environment for development and testing `docker-compose` can be used. For instance:
         | 
| 91 95 |  | 
| 96 | 
            +
                # Byron testnet
         | 
| 92 97 | 
             
                $ NETWORK=testnet WALLET=dev-master-byron NODE=latest docker-compose up --detach
         | 
| 93 98 |  | 
| 94 | 
            -
             | 
| 95 | 
            -
             | 
| 96 | 
            -
             | 
| 99 | 
            +
            or
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                # Shelley testnet
         | 
| 102 | 
            +
                $ NODE=1.13.0 WALLET=dev-master-shelley NODE_CONFIG_PATH=`pwd`/spec/shelley-testnet/ docker-compose -f docker-compose-shelley.yml up
         | 
| 97 103 |  | 
| 98 104 | 
             
            Run tests on top of that:
         | 
| 99 105 |  | 
| 100 106 | 
             
                $ rake
         | 
| 101 107 |  | 
| 108 | 
            +
            Clean up docker stuff after, e.g.:
         | 
| 109 | 
            +
             | 
| 110 | 
            +
                $ NETWORK=... docker-compose down --rmi all --remove-orphans
         | 
| 102 111 |  | 
| 103 112 | 
             
            ## Contributing
         | 
| 104 113 |  | 
    
        data/Rakefile
    CHANGED
    
    | @@ -4,3 +4,13 @@ require "rspec/core/rake_task" | |
| 4 4 | 
             
            RSpec::Core::RakeTask.new(:spec)
         | 
| 5 5 |  | 
| 6 6 | 
             
            task :default => :spec
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            require_relative "lib/cardano_wallet"
         | 
| 9 | 
            +
            task :wait_until_node_synced do
         | 
| 10 | 
            +
              desc "Wait for node to be synced"
         | 
| 11 | 
            +
              network = CardanoWallet.new.misc.network
         | 
| 12 | 
            +
              while network.information["sync_progress"]["status"] == "syncing" do
         | 
| 13 | 
            +
                puts "Syncing... #{network.information["sync_progress"]["progress"]["quantity"]}%"
         | 
| 14 | 
            +
                sleep 15
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
    
        data/cardano_wallet.gemspec
    CHANGED
    
    | @@ -31,6 +31,7 @@ Gem::Specification.new do |spec| | |
| 31 31 |  | 
| 32 32 | 
             
              spec.add_development_dependency 'rake', '~> 12.3'
         | 
| 33 33 | 
             
              spec.add_development_dependency 'rspec', '~> 3.7'
         | 
| 34 | 
            +
              spec.add_development_dependency 'bip_mnemonic', '~> 0.0.4'
         | 
| 34 35 | 
             
              spec.add_development_dependency 'codecov'
         | 
| 35 36 | 
             
              spec.add_development_dependency 'simplecov'
         | 
| 36 37 |  | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            version: "3.5"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            services:
         | 
| 4 | 
            +
              cardano-node:
         | 
| 5 | 
            +
                image: inputoutput/cardano-node:${NODE}
         | 
| 6 | 
            +
                volumes:
         | 
| 7 | 
            +
                  - node-db:/data
         | 
| 8 | 
            +
                  - node-ipc:/ipc
         | 
| 9 | 
            +
                  - ${NODE_CONFIG_PATH}:/config
         | 
| 10 | 
            +
                command: run --socket-path /ipc/node.socket --config /config/shelley_testnet-config.json --topology /config/shelley_testnet-topology.json --database-path /data
         | 
| 11 | 
            +
                restart: on-failure
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              cardano-wallet:
         | 
| 14 | 
            +
                image: inputoutput/cardano-wallet:${WALLET}
         | 
| 15 | 
            +
                volumes:
         | 
| 16 | 
            +
                  - wallet-shelley-db:/wallet-db
         | 
| 17 | 
            +
                  - node-ipc:/ipc
         | 
| 18 | 
            +
                  - ${NODE_CONFIG_PATH}:/config
         | 
| 19 | 
            +
                ports:
         | 
| 20 | 
            +
                  - 8090:8090
         | 
| 21 | 
            +
                command: serve --testnet /config/shelley_testnet-genesis.json --node-socket /ipc/node.socket --database /wallet-db --listen-address 0.0.0.0
         | 
| 22 | 
            +
                restart: on-failure
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            volumes:
         | 
| 25 | 
            +
              node-db:
         | 
| 26 | 
            +
              wallet-shelley-db:
         | 
| 27 | 
            +
              node-ipc:
         | 
    
        data/lib/cardano_wallet/byron.rb
    CHANGED
    
    | @@ -22,6 +22,12 @@ module CardanoWallet | |
| 22 22 | 
             
                    Addresses.new @opt
         | 
| 23 23 | 
             
                  end
         | 
| 24 24 |  | 
| 25 | 
            +
                  # API for CoinSelections
         | 
| 26 | 
            +
                  # @see https://input-output-hk.github.io/cardano-wallet/api/edge/#tag/Byron-Coin-Selections
         | 
| 27 | 
            +
                  def coin_selections
         | 
| 28 | 
            +
                    CoinSelections.new @opt
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
             | 
| 25 31 | 
             
                  # Get API for Byron transactions
         | 
| 26 32 | 
             
                  # @see https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/postByronTransactionFee
         | 
| 27 33 | 
             
                  def transactions
         | 
| @@ -152,6 +158,36 @@ module CardanoWallet | |
| 152 158 | 
             
                    self.class.put("/byron-wallets/#{wid}/addresses/#{addr_id}")
         | 
| 153 159 | 
             
                  end
         | 
| 154 160 |  | 
| 161 | 
            +
                  # Import addresses to Byron wallet.
         | 
| 162 | 
            +
                  # @see https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/importAddresses
         | 
| 163 | 
            +
                  # @param wid [String] wallet id
         | 
| 164 | 
            +
                  # @param addresses [Array] array of addresses
         | 
| 165 | 
            +
                  def bulk_import(wid, addresses)
         | 
| 166 | 
            +
                    self.class.put("/byron-wallets/#{wid}/addresses",
         | 
| 167 | 
            +
                    :body => { :addresses => addresses
         | 
| 168 | 
            +
                             }.to_json,
         | 
| 169 | 
            +
                    :headers => { 'Content-Type' => 'application/json' } )
         | 
| 170 | 
            +
                  end
         | 
| 171 | 
            +
                end
         | 
| 172 | 
            +
             | 
| 173 | 
            +
                # API for CoinSelections
         | 
| 174 | 
            +
                # @see https://input-output-hk.github.io/cardano-wallet/api/edge/#tag/Byron-Coin-Selections
         | 
| 175 | 
            +
                class CoinSelections < Base
         | 
| 176 | 
            +
                  def initialize opt
         | 
| 177 | 
            +
                    super
         | 
| 178 | 
            +
                  end
         | 
| 179 | 
            +
             | 
| 180 | 
            +
                  # Show random coin selection for particular payment
         | 
| 181 | 
            +
                  # @see https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/byronSelectCoins
         | 
| 182 | 
            +
                  #
         | 
| 183 | 
            +
                  # @example
         | 
| 184 | 
            +
                  #   random(wid, {address1: 123, address2: 456})
         | 
| 185 | 
            +
                  def random(wid, payments)
         | 
| 186 | 
            +
                    payments_formatted = Utils.format_payments(payments)
         | 
| 187 | 
            +
                    self.class.post("/byron-wallets/#{wid}/coin-selections/random",
         | 
| 188 | 
            +
                                    :body => {:payments => payments_formatted}.to_json,
         | 
| 189 | 
            +
                                    :headers => { 'Content-Type' => 'application/json' })
         | 
| 190 | 
            +
                  end
         | 
| 155 191 | 
             
                end
         | 
| 156 192 |  | 
| 157 193 | 
             
                # Byron transactions
         | 
| @@ -161,6 +197,12 @@ module CardanoWallet | |
| 161 197 | 
             
                    super
         | 
| 162 198 | 
             
                  end
         | 
| 163 199 |  | 
| 200 | 
            +
                  # Get tx by id
         | 
| 201 | 
            +
                  # @see https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/getByronTransaction
         | 
| 202 | 
            +
                  def get(wid, tx_id)
         | 
| 203 | 
            +
                    self.class.get("/byron-wallets/#{wid}/transactions/#{tx_id}")
         | 
| 204 | 
            +
                  end
         | 
| 205 | 
            +
             | 
| 164 206 | 
             
                  # List all Byron wallet's transactions.
         | 
| 165 207 | 
             
                  # @see https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/listByronTransactions
         | 
| 166 208 | 
             
                  #
         | 
| @@ -174,6 +174,12 @@ module CardanoWallet | |
| 174 174 | 
             
                    super
         | 
| 175 175 | 
             
                  end
         | 
| 176 176 |  | 
| 177 | 
            +
                  # Get tx by id
         | 
| 178 | 
            +
                  # @see https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/getTransaction
         | 
| 179 | 
            +
                  def get(wid, tx_id)
         | 
| 180 | 
            +
                    self.class.get("/wallets/#{wid}/transactions/#{tx_id}")
         | 
| 181 | 
            +
                  end
         | 
| 182 | 
            +
             | 
| 177 183 | 
             
                  # List all wallet's transactions
         | 
| 178 184 | 
             
                  # @see https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/listTransactions
         | 
| 179 185 | 
             
                  #
         | 
| @@ -189,17 +195,18 @@ module CardanoWallet | |
| 189 195 | 
             
                  # @param wid [String] source wallet id
         | 
| 190 196 | 
             
                  # @param passphrase [String] source wallet's passphrase
         | 
| 191 197 | 
             
                  # @param payments [Hash] addres, amount pair
         | 
| 198 | 
            +
                  # @param q [Hash] query param (currently only withdrawRewards = true | false)
         | 
| 192 199 | 
             
                  #
         | 
| 193 200 | 
             
                  # @example
         | 
| 194 | 
            -
                  #   create(wid, passphrase, {addr1: 1000000})
         | 
| 195 | 
            -
                  def create(wid, passphrase, payments)
         | 
| 201 | 
            +
                  #   create(wid, passphrase, {addr1: 1000000}, q)
         | 
| 202 | 
            +
                  def create(wid, passphrase, payments, q = {})
         | 
| 196 203 | 
             
                    payments_formatted = Utils.format_payments(payments)
         | 
| 197 | 
            -
                     | 
| 204 | 
            +
                    q.empty? ? query = '' : query = Utils.to_query(q)
         | 
| 205 | 
            +
                    self.class.post("/wallets/#{wid}/transactions#{query}",
         | 
| 198 206 | 
             
                    :body => { :payments => payments_formatted,
         | 
| 199 207 | 
             
                               :passphrase => passphrase
         | 
| 200 208 | 
             
                             }.to_json,
         | 
| 201 209 | 
             
                    :headers => { 'Content-Type' => 'application/json' } )
         | 
| 202 | 
            -
             | 
| 203 210 | 
             
                  end
         | 
| 204 211 |  | 
| 205 212 | 
             
                  # Estimate fees for transaction
         | 
| @@ -230,8 +237,9 @@ module CardanoWallet | |
| 230 237 |  | 
| 231 238 | 
             
                  # List all stake pools
         | 
| 232 239 | 
             
                  # @see https://input-output-hk.github.io/cardano-wallet/api/edge/#operation/listStakePools
         | 
| 233 | 
            -
                  def list
         | 
| 234 | 
            -
                     | 
| 240 | 
            +
                  def list(stake = {})
         | 
| 241 | 
            +
                    stake.empty? ? query = '' : query = Utils.to_query(stake)
         | 
| 242 | 
            +
                    self.class.get("/stake-pools#{query}")
         | 
| 235 243 | 
             
                  end
         | 
| 236 244 |  | 
| 237 245 | 
             
                  # Join stake pool
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: cardano_wallet
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Piotr Stachyra
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2020- | 
| 11 | 
            +
            date: 2020-07-16 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: httparty
         | 
| @@ -52,6 +52,20 @@ dependencies: | |
| 52 52 | 
             
                - - "~>"
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: '3.7'
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: bip_mnemonic
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - "~>"
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: 0.0.4
         | 
| 62 | 
            +
              type: :development
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - "~>"
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: 0.0.4
         | 
| 55 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 70 | 
             
              name: codecov
         | 
| 57 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -88,6 +102,7 @@ extensions: [] | |
| 88 102 | 
             
            extra_rdoc_files: []
         | 
| 89 103 | 
             
            files:
         | 
| 90 104 | 
             
            - ".github/workflows/gem-push.yml"
         | 
| 105 | 
            +
            - ".github/workflows/nightly.yml"
         | 
| 91 106 | 
             
            - ".github/workflows/tests.yml"
         | 
| 92 107 | 
             
            - ".gitignore"
         | 
| 93 108 | 
             
            - ".rakeTasks"
         | 
| @@ -101,6 +116,7 @@ files: | |
| 101 116 | 
             
            - bin/setup
         | 
| 102 117 | 
             
            - cardano_wallet.gemspec
         | 
| 103 118 | 
             
            - dev
         | 
| 119 | 
            +
            - docker-compose-shelley.yml
         | 
| 104 120 | 
             
            - docker-compose.yml
         | 
| 105 121 | 
             
            - lib/cardano_wallet.rb
         | 
| 106 122 | 
             
            - lib/cardano_wallet/base.rb
         |