platon 0.2.7 → 0.2.9
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/Gemfile.lock +2 -2
- data/README.md +24 -20
- data/doc/zh-cn.md +32 -14
- data/examples/generate_keys.rb +17 -0
- data/examples/get_balance.rb +33 -0
- data/lib/platon.rb +23 -24
- data/lib/{bech32.rb → platon/bech32.rb} +0 -0
- data/lib/platon/client.rb +2 -2
- data/lib/platon/contract.rb +0 -4
- data/lib/platon/key.rb +9 -7
- data/lib/platon/key/encrypter.rb +1 -1
- data/lib/platon/open_ssl.rb +16 -17
- data/lib/platon/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b74aa93e42dc1018e37a97771b504ce6f9afd8e54cd71d2356878e7a0b96d6f
|
4
|
+
data.tar.gz: 27c316fccb2c0e8a794e743ccd4c5f9f9bddac9510ad5d0e5060f351333e54ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25d498145373bbcc9e769208eebbd37cfbbdfa3abdcb2f4ef1fb0d6abe3fe4ac3831ac05adb578b70a1c27bc4fdd682647b7a6e9be6af44e904bbddabaa28b7d
|
7
|
+
data.tar.gz: 96195888ad12015a29f3cf5da1d15ec7ffd2ccf8c9241eabd74308121c2a3dac14bab565c52c1ae2f5622704dcf462d6db044a1129b286ae6b88989b3715d65a
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
platon (0.2.
|
4
|
+
platon (0.2.8)
|
5
5
|
activesupport (>= 4.0)
|
6
6
|
digest-sha3 (~> 1.1)
|
7
7
|
ffi (~> 1.0)
|
@@ -18,7 +18,7 @@ GEM
|
|
18
18
|
minitest (~> 5.1)
|
19
19
|
tzinfo (~> 1.1)
|
20
20
|
coderay (1.1.3)
|
21
|
-
concurrent-ruby (1.1.
|
21
|
+
concurrent-ruby (1.1.9)
|
22
22
|
diff-lcs (1.4.4)
|
23
23
|
digest-sha3 (1.1.0)
|
24
24
|
ffi (1.15.1)
|
data/README.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Ruby SDK for Platon & Alaya
|
2
2
|
|
3
3
|
|
4
|
-
|
5
4
|
<p align="center">
|
6
5
|
<img src="./platon-ruby-logo.png" width="80" title="platon ruby SDK" alt="platon ruby SDK">
|
7
6
|
</p>
|
@@ -29,7 +28,7 @@ Or install it yourself as:
|
|
29
28
|
|
30
29
|
## Quick Start
|
31
30
|
|
32
|
-
```
|
31
|
+
```ruby
|
33
32
|
## generate new key
|
34
33
|
key = Platon::Key.new
|
35
34
|
|
@@ -53,7 +52,7 @@ client.transfer key,"atpxxxxxxxxxxxxxxx",10**16
|
|
53
52
|
|
54
53
|
Create a new public/private key and get its address
|
55
54
|
|
56
|
-
```
|
55
|
+
```ruby
|
57
56
|
key = Platon::Key.new
|
58
57
|
key.private_hex ## private key
|
59
58
|
=> "08bb093d6184cb06a3f80507953ba6768c03d8114a429b0ec7875bb6b6e1a8a6"
|
@@ -61,11 +60,11 @@ key.private_hex ## private key
|
|
61
60
|
key.public_hex ## public key
|
62
61
|
=> "04641129e66399310ce4a41098d3b3fc4d722edf423dfdc0a76eba5d6e2155bbe611ee2a5c06011ab76040ca53b9ead4c5061d8cc8a89afa3f45af5830661d4b34"
|
63
62
|
|
64
|
-
key.bech32_address ## bech32 address ,default "
|
65
|
-
=> "
|
63
|
+
key.bech32_address ## bech32 address ,default "lat"
|
64
|
+
=> "lat1ls87d3mqfhxadjsmn0ns844tj8ljlsq8uqnv8u"
|
66
65
|
|
67
|
-
key.bech32_address(hrp: "
|
68
|
-
=> "
|
66
|
+
key.bech32_address(hrp: "atp")
|
67
|
+
=> "atp1ls87d3mqfhxadjsmn0ns844tj8ljlsq89k95cn"
|
69
68
|
|
70
69
|
key.address ## EIP55 checksummed address
|
71
70
|
=> "0xFc0Fe6c7604dcDd6ca1B9be703D6AB91fF2fC007"
|
@@ -73,14 +72,19 @@ key.address ## EIP55 checksummed address
|
|
73
72
|
|
74
73
|
Encrypt keys to json file
|
75
74
|
|
76
|
-
```
|
75
|
+
```ruby
|
76
|
+
## default address hrp:"lat"
|
77
77
|
encrypted_key_info = Platon::Key.encrypt key,"your_password"
|
78
78
|
|
79
|
+
## set address hrp
|
80
|
+
|
81
|
+
encrypted_key_info = Platon::Key.encrypt key,"your_password",{hrp:"atp"}
|
82
|
+
|
79
83
|
## or save to location
|
80
84
|
|
81
|
-
Platon::Key.encrypt_and_save key,"your_password",'./some/path.json'
|
85
|
+
Platon::Key.encrypt_and_save key,"your_password",{hrp:"atp",keypath:'./some/path.json'}
|
82
86
|
|
83
|
-
## or default:
|
87
|
+
## or default keypath: "~/.platon/keystore" ,and use default hrp:"lat"
|
84
88
|
|
85
89
|
Platon::Key.encrypt_and_save key,"your_password"
|
86
90
|
|
@@ -88,7 +92,7 @@ Platon::Key.encrypt_and_save key,"your_password"
|
|
88
92
|
|
89
93
|
Decrypt keys from json file
|
90
94
|
|
91
|
-
```
|
95
|
+
```ruby
|
92
96
|
decrypted_key = Platon::Key.decrypt encrypted_key_info,"your_password"
|
93
97
|
|
94
98
|
or
|
@@ -100,7 +104,7 @@ decrypted_key = Platon::Key.decrypt File.read('./some/path.json'), 'your_passwor
|
|
100
104
|
|
101
105
|
Build a transcation :
|
102
106
|
|
103
|
-
```
|
107
|
+
```ruby
|
104
108
|
args = {
|
105
109
|
from: key.address,
|
106
110
|
to: key2.address,
|
@@ -116,13 +120,13 @@ tx = Platon::Tx.new args
|
|
116
120
|
|
117
121
|
Or decode from an encoded raw transaction
|
118
122
|
|
119
|
-
```
|
123
|
+
```ruby
|
120
124
|
tx = Platon::Tx.decode hex
|
121
125
|
```
|
122
126
|
|
123
127
|
You can sign the transaction:
|
124
128
|
|
125
|
-
```
|
129
|
+
```ruby
|
126
130
|
tx.sign key
|
127
131
|
platon_send_raw_transaction(tx.hex)
|
128
132
|
```
|
@@ -133,7 +137,7 @@ Get the raw transaction with `tx.hex`, and broadcast it through any PlatON node
|
|
133
137
|
|
134
138
|
By default methods interactiong with contracts&PPOS will use default JSON RPC Client that will handle connection to platon node.
|
135
139
|
|
136
|
-
```
|
140
|
+
```ruby
|
137
141
|
client = Platon::HttpClient.new("http://127.0.0.1:6789",:alayadev)
|
138
142
|
```
|
139
143
|
|
@@ -146,7 +150,7 @@ Default setting:
|
|
146
150
|
|
147
151
|
You can use `client.update_setting` to change chain configs:
|
148
152
|
|
149
|
-
```
|
153
|
+
```ruby
|
150
154
|
client.update_setting(hrp:"atx",chain_id: 1234)
|
151
155
|
```
|
152
156
|
|
@@ -154,12 +158,12 @@ client.update_setting(hrp:"atx",chain_id: 1234)
|
|
154
158
|
|
155
159
|
You can get contract from blockchain. To do so you need a contract name ,contract address and ABI definition:
|
156
160
|
|
157
|
-
```
|
161
|
+
```ruby
|
158
162
|
contract = Platon::Contract.create(client: client ,name: "MyContract", address: "atpxxxx_your_bench32_address", abi: abi)
|
159
163
|
```
|
160
164
|
|
161
165
|
Alternatively you can obtain abi definition and name from contract source file:
|
162
|
-
```
|
166
|
+
```ruby
|
163
167
|
contract = Platon::Contract.create(client: client , file: "MyContract.sol", address: "atpxxxx_your_bench32_address")
|
164
168
|
```
|
165
169
|
|
@@ -167,7 +171,7 @@ Interacting with contracts:
|
|
167
171
|
|
168
172
|
You can `call` contract read-only method , no transaction will be sent to the network. If method changes contract state ,`transact` method can be used .
|
169
173
|
|
170
|
-
```
|
174
|
+
```ruby
|
171
175
|
contract.call.[function_name](params)
|
172
176
|
|
173
177
|
contract.transact.[function_name](params)
|
@@ -181,7 +185,7 @@ All PPOS methods have been implemented. See [Docs](./doc/zh-cn.md)
|
|
181
185
|
|
182
186
|
#### Utils
|
183
187
|
|
184
|
-
```
|
188
|
+
```ruby
|
185
189
|
Platon::Utils.is_bech32_address?("atp1tfm3e44jwdjmelcc9yacus700wcts0zhgw6425")
|
186
190
|
=> true
|
187
191
|
|
data/doc/zh-cn.md
CHANGED
@@ -66,13 +66,18 @@ key.address ## EIP55 checksummed address
|
|
66
66
|
将key加密保存至json文件
|
67
67
|
|
68
68
|
```ruby
|
69
|
+
## default address hrp:"lat"
|
69
70
|
encrypted_key_info = Platon::Key.encrypt key,"your_password"
|
70
71
|
|
72
|
+
## set address hrp
|
73
|
+
|
74
|
+
encrypted_key_info = Platon::Key.encrypt key,"your_password",{hrp:"atp"}
|
75
|
+
|
71
76
|
## or save to location
|
72
77
|
|
73
|
-
Platon::Key.encrypt_and_save key,"your_password",'./some/path.json'
|
78
|
+
Platon::Key.encrypt_and_save key,"your_password",{hrp:"atp",keypath:'./some/path.json'}
|
74
79
|
|
75
|
-
## or default:
|
80
|
+
## or default keypath: "~/.platon/keystore" ,and use default hrp:"lat"
|
76
81
|
|
77
82
|
Platon::Key.encrypt_and_save key,"your_password"
|
78
83
|
|
@@ -929,11 +934,11 @@ key.public_hex ## 公钥
|
|
929
934
|
key.address
|
930
935
|
=> "0xFc0Fe6c7604dcDd6ca1B9be703D6AB91fF2fC007"
|
931
936
|
|
932
|
-
key.bech32_address ## bech32 格式公钥 ,默认是 "
|
933
|
-
=> "
|
937
|
+
key.bech32_address ## bech32 格式公钥 ,默认是 "lat"
|
938
|
+
=> "lat1ls87d3mqfhxadjsmn0ns844tj8ljlsq8uqnv8u"
|
934
939
|
|
935
|
-
key.bech32_address(hrp: "
|
936
|
-
=> "
|
940
|
+
key.bech32_address(hrp: "atp")
|
941
|
+
=> "atp1ls87d3mqfhxadjsmn0ns844tj8ljlsq89k95cn"
|
937
942
|
```
|
938
943
|
|
939
944
|
### 使用已有私钥导入创建key
|
@@ -945,40 +950,53 @@ key = Platon::Key.new priv: private_key
|
|
945
950
|
|
946
951
|
### 备份钱包 encrypt
|
947
952
|
|
948
|
-
备份钱包,输入密码加密得到json
|
953
|
+
备份钱包,输入密码加密得到json字符串。第三个参数为options,hash类型,可传参数有: hrp
|
949
954
|
|
950
955
|
```ruby
|
956
|
+
# 默认使用的hrp为"lat"
|
951
957
|
encrypted_key_info = Platon::Key.encrypt key,"your_password"
|
952
958
|
|
953
|
-
#
|
959
|
+
#or
|
954
960
|
|
955
|
-
Platon::Key.
|
961
|
+
encrypted_key_info = Platon::Key.encrypt key,"your_password",{hrp:"atp"}
|
962
|
+
|
963
|
+
```
|
964
|
+
### 备份钱包且存储
|
956
965
|
|
957
|
-
|
966
|
+
备份钱包,输入密码加密得到json字符串,并存储于指定路径或默认路径。第三个参数为options,hash类型,可传参数有: hrp ,keypath
|
958
967
|
|
968
|
+
```ruby
|
969
|
+
#使用默认地址: ~/.platon/keystore ,默认hrp: "lat"
|
959
970
|
Platon::Key.encrypt_and_save key,"your_password"
|
960
971
|
|
972
|
+
# or
|
973
|
+
|
974
|
+
Platon::Key.encrypt_and_save key,"your_password",{hrp:"atp",keypath:'./some/path.json'}
|
975
|
+
|
961
976
|
```
|
962
977
|
|
978
|
+
|
963
979
|
### 恢复钱包 decrypt
|
964
|
-
恢复钱包,输入密码得到key
|
980
|
+
恢复钱包,输入密码得到key对象, 恢复钱包可适配任意hrp,无需指定hrp
|
965
981
|
|
966
982
|
```ruby
|
967
983
|
decrypted_key = Platon::Key.decrypt encrypted_key_info,"your_password"
|
968
984
|
|
969
|
-
# or
|
985
|
+
# or 先读取指定路径的钱包文件
|
970
986
|
|
971
987
|
decrypted_key = Platon::Key.decrypt File.read('./some/path.json'), 'your_password'
|
972
988
|
```
|
973
989
|
|
974
990
|
###查询本地钱包 list_wallets
|
975
991
|
|
992
|
+
可传参数options,默认路径为 "~/.platon/keystore"
|
993
|
+
|
976
994
|
```ruby
|
977
995
|
Platon::Key.list_wallets
|
978
996
|
|
979
997
|
# or
|
980
998
|
|
981
|
-
Platon::Key.list_wallets("/your/wallet/path/")
|
999
|
+
Platon::Key.list_wallets(keypath:"/your/wallet/path/")
|
982
1000
|
```
|
983
1001
|
|
984
1002
|
|
@@ -1040,7 +1058,7 @@ rake 'platon:contract:compile[./spec/fixtures/greeter.sol]'
|
|
1040
1058
|
|
1041
1059
|
* 参数
|
1042
1060
|
* `Object`: 发起方的 Key 实例,通过 Platon::Key.new 创建或导入
|
1043
|
-
* `Integer`: typ, 表示使用账户自由金额还是账户的锁仓金额做质押,0: 自由金额; 1: 锁仓金额
|
1061
|
+
* `Integer`: typ, 表示使用账户自由金额还是账户的锁仓金额做质押,0: 自由金额; 1: 锁仓金额 2:优先使用锁仓余额,锁仓余额不足,则剩下使用自由金额
|
1044
1062
|
* `String`: benefitAddress,用于接受出块奖励和质押奖励的收益账户
|
1045
1063
|
* `String`: nodeId,被质押的节点Id(也叫候选人的节点Id)
|
1046
1064
|
* `String`: externalId,外部Id(有长度限制,给第三方拉取节点描述的Id)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "platon"
|
2
|
+
|
3
|
+
puts "Example : generate key , print address and private_key"
|
4
|
+
|
5
|
+
while true
|
6
|
+
puts ""
|
7
|
+
puts "Press any key to Generate keys.."
|
8
|
+
STDIN.readline
|
9
|
+
|
10
|
+
|
11
|
+
key = Platon::Key.new
|
12
|
+
puts "Address on PlatON: #{key.bech32_address(hrp: "lat")}"
|
13
|
+
puts "Address on Alaya: #{key.bech32_address(hrp: "atp")}"
|
14
|
+
puts "EIP55 address: #{key.address}"
|
15
|
+
puts "PrivateKey: #{key.private_hex}"
|
16
|
+
puts "===================================="
|
17
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
### Get Core Token(lat or atp) balance
|
2
|
+
### Get Arc20/Prc20 balance
|
3
|
+
|
4
|
+
require "platon"
|
5
|
+
|
6
|
+
### Example on Alaya:
|
7
|
+
|
8
|
+
RPC = "http://127.0.0.1:6789" # change to your rpc address
|
9
|
+
|
10
|
+
TARGET_ADDRESS_1 = "atp1lsds5k5wys93vhm8gvkvepyx5e9hxtfz8w4r5x"
|
11
|
+
TARGET_ADDRESS_2 = "atp1djc6dvd2y2kj04hhy30rmctkc9nnqmmzlk42uv"
|
12
|
+
|
13
|
+
|
14
|
+
client = Platon::HttpClient.new(RPC,"alaya")
|
15
|
+
|
16
|
+
###Get Core Token(lat or atp) balance
|
17
|
+
res = client.platon_get_balance(TARGET_ADDRESS_1,"latest")
|
18
|
+
balance = res / 10**18.to_f
|
19
|
+
puts "#{TARGET_ADDRESS_1} #{client.hrp.upcase} balance: #{balance} "
|
20
|
+
|
21
|
+
###Get Arc20/Prc20 balance
|
22
|
+
client.default_account = Platon::Key.new.bech32_address # 随机生成地址并指定即可。 因platon节点要求call也必须传入from参数
|
23
|
+
minABI=[{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"type":"function"}];
|
24
|
+
contract = Platon::Contract.create(
|
25
|
+
client:client,
|
26
|
+
name: "MyContract",
|
27
|
+
address: "atp16lellpkrv894hmg8am7ns3p2qny2vqj85ud8s6", #ARC20 contract address
|
28
|
+
abi:minABI # Arc20 contract abi
|
29
|
+
)
|
30
|
+
|
31
|
+
res2 = contract.call.balance_of(TARGET_ADDRESS_2)
|
32
|
+
aETH_balance = res2 / 10**18.to_f
|
33
|
+
puts "#{TARGET_ADDRESS_2} aETH balance: #{aETH_balance}"
|
data/lib/platon.rb
CHANGED
@@ -9,8 +9,6 @@ require 'ffi'
|
|
9
9
|
require 'money-tree'
|
10
10
|
require 'rlp'
|
11
11
|
|
12
|
-
require 'bech32'
|
13
|
-
|
14
12
|
module Platon
|
15
13
|
|
16
14
|
BYTE_ZERO = "\x00".freeze
|
@@ -38,28 +36,29 @@ module Platon
|
|
38
36
|
end
|
39
37
|
end
|
40
38
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
39
|
+
require_relative 'platon/bech32'
|
40
|
+
require_relative 'platon/abi'
|
41
|
+
require_relative 'platon/client'
|
42
|
+
require_relative 'platon/ipc_client'
|
43
|
+
require_relative 'platon/http_client'
|
44
|
+
require_relative 'platon/singleton'
|
45
|
+
require_relative 'platon/solidity'
|
46
|
+
require_relative 'platon/initializer'
|
47
|
+
require_relative 'platon/contract'
|
48
|
+
require_relative 'platon/explorer_url_helper'
|
49
|
+
require_relative 'platon/function'
|
50
|
+
require_relative 'platon/function_input'
|
51
|
+
require_relative 'platon/function_output'
|
52
|
+
require_relative 'platon/contract_event'
|
53
|
+
require_relative 'platon/encoder'
|
54
|
+
require_relative 'platon/decoder'
|
55
|
+
require_relative 'platon/formatter'
|
56
|
+
require_relative 'platon/transaction'
|
57
|
+
require_relative 'platon/deployment'
|
58
|
+
require_relative 'platon/contract_initializer'
|
59
|
+
require_relative 'platon/railtie' if defined?(Rails)
|
60
|
+
|
61
|
+
require_relative 'platon/ppos'
|
63
62
|
|
64
63
|
autoload :Address, 'platon/address'
|
65
64
|
autoload :Gas, 'platon/gas'
|
File without changes
|
data/lib/platon/client.rb
CHANGED
@@ -138,7 +138,7 @@ module Platon
|
|
138
138
|
# end
|
139
139
|
|
140
140
|
payload = {jsonrpc: "2.0", method: command, params: encode_params(args), id: get_id}
|
141
|
-
|
141
|
+
puts payload
|
142
142
|
@logger.info("Sending #{payload.to_json}") if @log
|
143
143
|
if @batch
|
144
144
|
@batch << payload
|
@@ -146,7 +146,7 @@ module Platon
|
|
146
146
|
else
|
147
147
|
# tmp = send_single(payload.to_json)
|
148
148
|
# output = JSON.parse(tmp)
|
149
|
-
output = JSON.parse(send_single(payload.to_json))
|
149
|
+
p output = JSON.parse(send_single(payload.to_json))
|
150
150
|
@logger.info("Received #{output.to_json}") if @log
|
151
151
|
reset_id
|
152
152
|
raise IOError, output["error"]["message"] if output["error"]
|
data/lib/platon/contract.rb
CHANGED
@@ -11,10 +11,6 @@ module Platon
|
|
11
11
|
attr_accessor :call_raw_proxy, :call_proxy, :transact_proxy, :transact_and_wait_proxy
|
12
12
|
attr_accessor :new_filter_proxy, :get_filter_logs_proxy, :get_filter_change_proxy
|
13
13
|
|
14
|
-
def self.hello
|
15
|
-
puts 111
|
16
|
-
end
|
17
|
-
|
18
14
|
def initialize(name, code, abi, client = Platon::Singleton.instance)
|
19
15
|
@name = name
|
20
16
|
@code = code
|
data/lib/platon/key.rb
CHANGED
@@ -5,10 +5,10 @@ module Platon
|
|
5
5
|
|
6
6
|
attr_reader :private_key, :public_key
|
7
7
|
|
8
|
-
def self.encrypt(key, password)
|
8
|
+
def self.encrypt(key, password,options={})
|
9
9
|
key = new(priv: key) unless key.is_a?(Key)
|
10
10
|
|
11
|
-
Encrypter.perform key.private_hex, password
|
11
|
+
Encrypter.perform key.private_hex, password ,options
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.decrypt(data, password)
|
@@ -16,9 +16,10 @@ module Platon
|
|
16
16
|
new priv: priv
|
17
17
|
end
|
18
18
|
|
19
|
-
def self.encrypt_and_save(key,password,
|
20
|
-
encrypted_key_info = encrypt(key,password)
|
19
|
+
def self.encrypt_and_save(key,password,options={})
|
20
|
+
encrypted_key_info = encrypt(key,password,options)
|
21
21
|
## PlatON似乎打算兼容以太地址, 暂时默认以 0x 地址命名
|
22
|
+
keypath = options[:keypath]
|
22
23
|
if keypath==nil || keypath==""
|
23
24
|
address = key.address
|
24
25
|
dirname = "#{ENV['HOME']}/.platon/keystore/"
|
@@ -30,7 +31,8 @@ module Platon
|
|
30
31
|
return encrypted_key_info
|
31
32
|
end
|
32
33
|
|
33
|
-
def self.list_wallets(
|
34
|
+
def self.list_wallets(options={})
|
35
|
+
keypath = options[:keypath]
|
34
36
|
if keypath==nil || keypath==""
|
35
37
|
Dir.glob("#{ENV['HOME']}/.platon/keystore/*").select { |e| File.file? e }
|
36
38
|
else
|
@@ -64,8 +66,8 @@ module Platon
|
|
64
66
|
Utils.public_key_to_address public_hex
|
65
67
|
end
|
66
68
|
|
67
|
-
def bech32_address(hrp:"
|
68
|
-
Utils.to_bech32_address(hrp,address)
|
69
|
+
def bech32_address(hrp:"lat")
|
70
|
+
Utils.to_bech32_address(hrp,address)
|
69
71
|
end
|
70
72
|
alias_method :to_address, :address
|
71
73
|
|
data/lib/platon/key/encrypter.rb
CHANGED
data/lib/platon/open_ssl.rb
CHANGED
@@ -9,7 +9,7 @@ module Platon
|
|
9
9
|
ffi_lib 'libeay32', 'ssleay32'
|
10
10
|
else
|
11
11
|
ffi_lib [
|
12
|
-
'libssl.so.1.1.0', 'libssl.so.1.1',
|
12
|
+
'libssl.so.1.1.0', 'libssl.so.1.1', 'libssl.1.1',
|
13
13
|
'libssl.so.1.0.0', 'libssl.so.10',
|
14
14
|
'ssl'
|
15
15
|
]
|
@@ -55,22 +55,21 @@ module Platon
|
|
55
55
|
# @return [Integer] version number as an integer.
|
56
56
|
def self.version
|
57
57
|
if self.respond_to?(:OpenSSL_version_num)
|
58
|
-
OpenSSL_version_num()
|
58
|
+
OpenSSL_version_num()
|
59
59
|
else
|
60
|
-
SSLeay
|
60
|
+
# Hardcode here: OpenSSL verson > 1.1 should < 269484032 . But on MacOS ,version 1.0.2 ,SSLeay returns 536870912 ,that is v2.0.0
|
61
|
+
[SSLeay(),269484031].min
|
61
62
|
end
|
62
63
|
end
|
63
64
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
# else
|
69
|
-
|
65
|
+
if version >= VERSION_1_1_0_NUM
|
66
|
+
# Initialization procedure for the library was changed in OpenSSL 1.1.0
|
67
|
+
attach_function :OPENSSL_init_ssl, [:uint64, :pointer], :int
|
68
|
+
else
|
70
69
|
attach_function :SSL_library_init, [], :int
|
71
70
|
attach_function :ERR_load_crypto_strings, [], :void
|
72
71
|
attach_function :SSL_load_error_strings, [], :void
|
73
|
-
|
72
|
+
end
|
74
73
|
|
75
74
|
attach_function :RAND_poll, [], :int
|
76
75
|
attach_function :BN_CTX_free, [:pointer], :int
|
@@ -227,16 +226,16 @@ module Platon
|
|
227
226
|
def init_ffi_ssl
|
228
227
|
return if @ssl_loaded
|
229
228
|
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
229
|
+
if version >= VERSION_1_1_0_NUM
|
230
|
+
OPENSSL_init_ssl(
|
231
|
+
OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_ENGINE_ALL_BUILTIN,
|
232
|
+
nil
|
233
|
+
)
|
234
|
+
else
|
236
235
|
SSL_library_init()
|
237
236
|
ERR_load_crypto_strings()
|
238
237
|
SSL_load_error_strings()
|
239
|
-
|
238
|
+
end
|
240
239
|
|
241
240
|
RAND_poll()
|
242
241
|
@ssl_loaded = true
|
data/lib/platon/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: platon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vianull
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -169,10 +169,12 @@ files:
|
|
169
169
|
- bin/console
|
170
170
|
- bin/setup
|
171
171
|
- doc/zh-cn.md
|
172
|
-
-
|
172
|
+
- examples/generate_keys.rb
|
173
|
+
- examples/get_balance.rb
|
173
174
|
- lib/platon.rb
|
174
175
|
- lib/platon/abi.rb
|
175
176
|
- lib/platon/address.rb
|
177
|
+
- lib/platon/bech32.rb
|
176
178
|
- lib/platon/client.rb
|
177
179
|
- lib/platon/contract.rb
|
178
180
|
- lib/platon/contract_event.rb
|
@@ -207,7 +209,6 @@ files:
|
|
207
209
|
- lib/tasks/platon_contract.rake
|
208
210
|
- platon-ruby-logo.png
|
209
211
|
- platon.gemspec
|
210
|
-
- platon.gemspec.bak
|
211
212
|
homepage:
|
212
213
|
licenses:
|
213
214
|
- MIT
|