ethereum 0.3.85 → 0.3.90

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: df055ed477097c278f02faac6e0d0202cce2fd14
4
- data.tar.gz: 575ec4d1544985f04215a3240e8d7f45e40cc2d7
3
+ metadata.gz: ed9c6d551eb9ada508059a23e99f6c14e1549520
4
+ data.tar.gz: b82d97a1bbce969eafaac85413d6053206896fc6
5
5
  SHA512:
6
- metadata.gz: b9dd2743160ec90a0eea5c7abe76531416bb93c59022e543cc49427eb8abf1ca64ec3a15ea61bd32b8421ea57ad15a84ac0d097e35526076d030d70ad56655d6
7
- data.tar.gz: 8d5c7a02f2476e79d7414217a49701e722c56f34fc34c7ac9d1d142203f59b61b5b9cf687b49dd769bf88f7c110c35357f39a6b5fd47c6ab0d390d2092977a61
6
+ metadata.gz: 27cedd3b4bd01319c0489d8640a3fa00ee3e24a083e22ffeb0b5cd07eb074f0cf30075bcd8b971d557b4452f1556521d883a6d89c552a36d93d8a2899396eeac
7
+ data.tar.gz: 1e4c072d0a161fab24ce8b0abc7ed5377fb9c0feb798967b8baf787fa90e3401b412dc4ec92c7afeb69f3843919c02f258a5ff8d5b7c6d74db39cf48130323f8
data/README.md CHANGED
@@ -8,6 +8,7 @@ A simple library for Ethereum.
8
8
  * IPC Client with batch calls support
9
9
  * HTTP Client with batch calls support
10
10
  * Compile and deploy Solidity contracts
11
+ * Deploy contracts with constructor parameters.
11
12
  * Expose deployed contracts as Ruby classes
12
13
  * Test solidity contracts with a Ruby testing framework of your choice
13
14
  * Call and wait for the result of Solidity function calls.
@@ -57,7 +58,7 @@ client = Ethereum::IpcClient.new("#{ENV['HOME']}/.ethereum_testnet/geth.ipc")
57
58
  init = Ethereum::Initializer.new("#{ENV['PWD']}/spec/fixtures/SimpleNameRegistry.sol", client)
58
59
  init.build_all
59
60
  simple_name_registry_instance = SimpleNameRegistry.new
60
- simple_name_registry_instance.deploy_and_wait
61
+ simple_name_registry_instance.deploy_and_wait(60)
61
62
  ```
62
63
 
63
64
  ### Transacting and Calling Solidity Functions
@@ -1,13 +1,15 @@
1
+ require 'pry'
1
2
  module Ethereum
2
3
  class Contract
3
4
 
4
- attr_accessor :code, :name, :functions, :abi
5
+ attr_accessor :code, :name, :functions, :abi, :constructor_inputs
5
6
 
6
7
  def initialize(name, code, abi)
7
8
  @name = name
8
9
  @code = code
9
10
  @abi = abi
10
11
  @functions = []
12
+ @constructor_inputs = @abi.detect {|x| x["type"] == "constructor"}["inputs"]
11
13
  @abi.select {|x| x["type"] == "function" }.each do |abifun|
12
14
  @functions << Ethereum::Function.new(abifun)
13
15
  end
@@ -16,6 +18,7 @@ module Ethereum
16
18
  def build(connection)
17
19
  class_name = @name
18
20
  functions = @functions
21
+ constructor_inputs = @constructor_inputs
19
22
  code = @code
20
23
  class_methods = Class.new do
21
24
 
@@ -23,7 +26,13 @@ module Ethereum
23
26
  connection
24
27
  end
25
28
 
26
- define_method :deploy do
29
+ define_method :deploy do |*params|
30
+ raise "Missing constructor parameter" and return if params.length != constructor_inputs.length
31
+ formatter = Ethereum::Formatter.new
32
+ constructor_inputs.each_index do |i|
33
+ args = [constructor_inputs[i]["type"], params[i]]
34
+ code << formatter.to_payload(args)
35
+ end
27
36
  deploytx = connection.send_transaction({from: self.sender, gas: 2000000, gasPrice: 60000000000, data: code})["result"]
28
37
  self.instance_variable_set("@deployment", Ethereum::Deployment.new(deploytx, connection))
29
38
  end
@@ -32,8 +41,8 @@ module Ethereum
32
41
  self.instance_variable_get("@deployment")
33
42
  end
34
43
 
35
- define_method :deploy_and_wait do |time = 60.seconds|
36
- self.deploy
44
+ define_method :deploy_and_wait do |time = 60.seconds, *params|
45
+ self.deploy(*params)
37
46
  self.deployment.wait_for_deployment(time)
38
47
  self.instance_variable_set("@address", self.deployment.contract_address)
39
48
  end
@@ -1,4 +1,5 @@
1
1
  require 'pry'
2
+ require 'net/http'
2
3
  module Ethereum
3
4
  class HttpClient < Client
4
5
  attr_accessor :command, :id, :host, :port, :batch, :converted_transactions, :uri
@@ -16,9 +17,9 @@ module Ethereum
16
17
  define_method method_name do |*args|
17
18
  command = rpc_command
18
19
  payload = {jsonrpc: "2.0", method: command, params: args, id: get_id}
19
- http = Net::HTTP.new(@host, @port)
20
+ http = ::Net::HTTP.new(@host, @port)
20
21
  header = {'Content-Type' => 'application/json'}
21
- request = Net::HTTP::Post.new(uri, header)
22
+ request = ::Net::HTTP::Post.new(uri, header)
22
23
  request.body = payload.to_json
23
24
  response = http.request(request)
24
25
  return JSON.parse(response.body)
@@ -1,3 +1,3 @@
1
1
  module Ethereum
2
- VERSION = "0.3.85"
2
+ VERSION = "0.3.90"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ethereum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.85
4
+ version: 0.3.90
5
5
  platform: ruby
6
6
  authors:
7
7
  - DigixGlobal Pte Ltd (https://dgx.io)