etherlite 0.2.6 → 0.3.0
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 +5 -5
- data/etherlite.gemspec +2 -2
- data/lib/etherlite/account/private_key.rb +5 -1
- data/lib/etherlite/nonce_manager.rb +3 -2
- data/lib/etherlite/transaction.rb +48 -34
- data/lib/etherlite/version.rb +1 -1
- metadata +7 -8
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: fe14df0fc898d4e298d57704e8a7f2acf0cb3dcace02b94903b8f295f94e971c
         | 
| 4 | 
            +
              data.tar.gz: 87c4bc2dca3fb92d8a1eca54080cbfa50107defe48d0007cc5e6c3910bdfaa4e
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: c1e16e2460b1e67948efd91921b1e03e6805c114fdba9a375c4b83695baa6d01ca80b46fc3530be5ac923c641d47190cc7fc466cdf6daef793f55cb54993be0a
         | 
| 7 | 
            +
              data.tar.gz: 76cb54b21dd785777fcd474f0bbf85e374b9a6aad8bd64d1ddfed73f195c51a736b339045b09056be8da32c34e7d272abcf7393b4bc1bd187efe2fb2186adc57
         | 
    
        data/etherlite.gemspec
    CHANGED
    
    | @@ -24,11 +24,11 @@ Gem::Specification.new do |spec| | |
| 24 24 | 
             
              spec.add_dependency "eth", "~> 0.4.4"
         | 
| 25 25 | 
             
              spec.add_dependency "activesupport"
         | 
| 26 26 |  | 
| 27 | 
            -
              spec.add_development_dependency "bundler", "~> 1. | 
| 27 | 
            +
              spec.add_development_dependency "bundler", "~> 2.1.4"
         | 
| 28 28 | 
             
              spec.add_development_dependency "rake", "~> 10.0"
         | 
| 29 29 | 
             
              spec.add_development_dependency "rspec", "~> 3.0"
         | 
| 30 30 | 
             
              spec.add_development_dependency "guard", "~> 2.14"
         | 
| 31 31 | 
             
              spec.add_development_dependency "guard-rspec", "~> 4.7"
         | 
| 32 | 
            -
              spec.add_development_dependency "webmock", "~> 3. | 
| 32 | 
            +
              spec.add_development_dependency "webmock", "~> 3.7.5"
         | 
| 33 33 | 
             
              spec.add_development_dependency "pry"
         | 
| 34 34 | 
             
            end
         | 
| @@ -9,7 +9,11 @@ module Etherlite | |
| 9 9 | 
             
                  end
         | 
| 10 10 |  | 
| 11 11 | 
             
                  def send_transaction(_options = {})
         | 
| 12 | 
            -
                     | 
| 12 | 
            +
                    nonce_options = {
         | 
| 13 | 
            +
                      replace: _options.fetch(:replace, false)
         | 
| 14 | 
            +
                    }
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    nonce_manager.with_next_nonce_for(normalized_address, nonce_options) do |nonce|
         | 
| 13 17 | 
             
                      tx = Eth::Tx.new(
         | 
| 14 18 | 
             
                        value: _options.fetch(:value, 0),
         | 
| 15 19 | 
             
                        data: _options.fetch(:data, ''),
         | 
| @@ -17,9 +17,10 @@ module Etherlite | |
| 17 17 | 
             
                  last_nonce
         | 
| 18 18 | 
             
                end
         | 
| 19 19 |  | 
| 20 | 
            -
                def with_next_nonce_for(_normalized_address)
         | 
| 20 | 
            +
                def with_next_nonce_for(_normalized_address, replace: false)
         | 
| 21 21 | 
             
                  @@nonce_mutex.synchronize do
         | 
| 22 | 
            -
                    next_nonce = last_nonce_for(_normalized_address) | 
| 22 | 
            +
                    next_nonce = last_nonce_for(_normalized_address)
         | 
| 23 | 
            +
                    next_nonce += 1 if next_nonce.negative? || !replace # if first tx, don't replace
         | 
| 23 24 |  | 
| 24 25 | 
             
                    begin
         | 
| 25 26 | 
             
                      result = yield next_nonce
         | 
| @@ -1,72 +1,92 @@ | |
| 1 1 | 
             
            module Etherlite
         | 
| 2 2 | 
             
              class Transaction
         | 
| 3 | 
            -
                attr_reader :tx_hash | 
| 3 | 
            +
                attr_reader :tx_hash
         | 
| 4 4 |  | 
| 5 5 | 
             
                def initialize(_connection, _tx_hash)
         | 
| 6 6 | 
             
                  @connection = _connection
         | 
| 7 7 | 
             
                  @tx_hash = _tx_hash
         | 
| 8 | 
            -
                  @ | 
| 8 | 
            +
                  @loaded = false
         | 
| 9 9 | 
             
                end
         | 
| 10 10 |  | 
| 11 11 | 
             
                def refresh
         | 
| 12 | 
            -
                  @ | 
| 12 | 
            +
                  @original = @connection.eth_get_transaction_by_hash(@tx_hash)
         | 
| 13 | 
            +
                  @loaded = true
         | 
| 13 14 | 
             
                  self
         | 
| 14 15 | 
             
                end
         | 
| 15 16 |  | 
| 17 | 
            +
                def original
         | 
| 18 | 
            +
                  refresh unless @loaded
         | 
| 19 | 
            +
                  @original
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 16 22 | 
             
                def removed?
         | 
| 17 | 
            -
                   | 
| 23 | 
            +
                  original.nil?
         | 
| 18 24 | 
             
                end
         | 
| 19 25 |  | 
| 20 | 
            -
                def  | 
| 21 | 
            -
                   | 
| 26 | 
            +
                def mined?
         | 
| 27 | 
            +
                  original.present? && !original['blockNumber'].nil?
         | 
| 22 28 | 
             
                end
         | 
| 23 29 |  | 
| 24 | 
            -
                def  | 
| 25 | 
            -
                   | 
| 26 | 
            -
                  status = @receipt['status']
         | 
| 27 | 
            -
                  status.is_a?(String) ? Utils.hex_to_uint(status) : status
         | 
| 30 | 
            +
                def gas
         | 
| 31 | 
            +
                  original && Utils.hex_to_uint(original['gas'])
         | 
| 28 32 | 
             
                end
         | 
| 29 33 |  | 
| 30 | 
            -
                def  | 
| 31 | 
            -
                   | 
| 34 | 
            +
                def gas_price
         | 
| 35 | 
            +
                  original && Utils.hex_to_uint(original['gasPrice'])
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                def value
         | 
| 39 | 
            +
                  original && Utils.hex_to_uint(original['value'])
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                def block_number
         | 
| 43 | 
            +
                  return nil unless mined?
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  Utils.hex_to_uint(original['blockNumber'])
         | 
| 32 46 | 
             
                end
         | 
| 33 47 |  | 
| 34 48 | 
             
                def confirmations
         | 
| 35 49 | 
             
                  return 0 unless mined?
         | 
| 36 50 |  | 
| 37 | 
            -
                  @connection.eth_block_number - block_number
         | 
| 51 | 
            +
                  (@connection.eth_block_number - block_number) + 1
         | 
| 38 52 | 
             
                end
         | 
| 39 53 |  | 
| 40 | 
            -
                 | 
| 41 | 
            -
             | 
| 54 | 
            +
                # receipt attributes
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                def receipt
         | 
| 57 | 
            +
                  return nil unless mined?
         | 
| 58 | 
            +
                  
         | 
| 59 | 
            +
                  @receipt ||= @connection.eth_get_transaction_receipt(@tx_hash)
         | 
| 42 60 | 
             
                end
         | 
| 43 61 |  | 
| 44 | 
            -
                def  | 
| 45 | 
            -
                   | 
| 62 | 
            +
                def status
         | 
| 63 | 
            +
                  return nil if receipt.nil?
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                  receipt['status'].is_a?(String) ? Utils.hex_to_uint(receipt['status']) : receipt['status']
         | 
| 46 66 | 
             
                end
         | 
| 47 67 |  | 
| 48 | 
            -
                def  | 
| 49 | 
            -
                   | 
| 68 | 
            +
                def succeeded?
         | 
| 69 | 
            +
                  status == 1
         | 
| 50 70 | 
             
                end
         | 
| 51 71 |  | 
| 52 | 
            -
                def  | 
| 53 | 
            -
                   | 
| 72 | 
            +
                def failed?
         | 
| 73 | 
            +
                  status == 0
         | 
| 54 74 | 
             
                end
         | 
| 55 75 |  | 
| 56 | 
            -
                def  | 
| 57 | 
            -
                   | 
| 76 | 
            +
                def gas_used
         | 
| 77 | 
            +
                  receipt && Utils.hex_to_uint(receipt['gasUsed'])
         | 
| 58 78 | 
             
                end
         | 
| 59 79 |  | 
| 60 | 
            -
                def  | 
| 61 | 
            -
                   | 
| 80 | 
            +
                def logs
         | 
| 81 | 
            +
                  receipt && (receipt['logs'] || [])
         | 
| 62 82 | 
             
                end
         | 
| 63 83 |  | 
| 64 | 
            -
                def  | 
| 65 | 
            -
                   | 
| 84 | 
            +
                def events
         | 
| 85 | 
            +
                  receipt && ::Etherlite::EventProvider.parse_raw_logs(@connection, logs)
         | 
| 66 86 | 
             
                end
         | 
| 67 87 |  | 
| 68 88 | 
             
                def contract_address
         | 
| 69 | 
            -
                   | 
| 89 | 
            +
                  receipt && receipt['contractAddress']
         | 
| 70 90 | 
             
                end
         | 
| 71 91 |  | 
| 72 92 | 
             
                def wait_for_block(timeout: 120)
         | 
| @@ -79,11 +99,5 @@ module Etherlite | |
| 79 99 |  | 
| 80 100 | 
             
                  true
         | 
| 81 101 | 
             
                end
         | 
| 82 | 
            -
             | 
| 83 | 
            -
                private
         | 
| 84 | 
            -
             | 
| 85 | 
            -
                def original
         | 
| 86 | 
            -
                  @original ||= @connection.eth_get_transaction_by_hash(@tx_hash)
         | 
| 87 | 
            -
                end
         | 
| 88 102 | 
             
              end
         | 
| 89 103 | 
             
            end
         | 
    
        data/lib/etherlite/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: etherlite
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.3.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ignacio Baixas
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2020-08-24 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: digest-sha3
         | 
| @@ -72,14 +72,14 @@ dependencies: | |
| 72 72 | 
             
                requirements:
         | 
| 73 73 | 
             
                - - "~>"
         | 
| 74 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version:  | 
| 75 | 
            +
                    version: 2.1.4
         | 
| 76 76 | 
             
              type: :development
         | 
| 77 77 | 
             
              prerelease: false
         | 
| 78 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 79 | 
             
                requirements:
         | 
| 80 80 | 
             
                - - "~>"
         | 
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version:  | 
| 82 | 
            +
                    version: 2.1.4
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 84 | 
             
              name: rake
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -142,14 +142,14 @@ dependencies: | |
| 142 142 | 
             
                requirements:
         | 
| 143 143 | 
             
                - - "~>"
         | 
| 144 144 | 
             
                  - !ruby/object:Gem::Version
         | 
| 145 | 
            -
                    version: 3. | 
| 145 | 
            +
                    version: 3.7.5
         | 
| 146 146 | 
             
              type: :development
         | 
| 147 147 | 
             
              prerelease: false
         | 
| 148 148 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 149 149 | 
             
                requirements:
         | 
| 150 150 | 
             
                - - "~>"
         | 
| 151 151 | 
             
                  - !ruby/object:Gem::Version
         | 
| 152 | 
            -
                    version: 3. | 
| 152 | 
            +
                    version: 3.7.5
         | 
| 153 153 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 154 154 | 
             
              name: pry
         | 
| 155 155 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -248,8 +248,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 248 248 | 
             
                - !ruby/object:Gem::Version
         | 
| 249 249 | 
             
                  version: '0'
         | 
| 250 250 | 
             
            requirements: []
         | 
| 251 | 
            -
             | 
| 252 | 
            -
            rubygems_version: 2.6.14.1
         | 
| 251 | 
            +
            rubygems_version: 3.0.3
         | 
| 253 252 | 
             
            signing_key: 
         | 
| 254 253 | 
             
            specification_version: 4
         | 
| 255 254 | 
             
            summary: Ethereum integration for ruby on rails
         |