Class: RecordOnChain::NemController
- Inherits:
-
Object
- Object
- RecordOnChain::NemController
- Defined in:
- lib/record_on_chain/nem_controller.rb
Constant Summary collapse
- @@NET_TYPES =
[:testnet , :mainnet].freeze
Class Method Summary collapse
- .address_from_public(public_key, network_type) ⇒ Object
- .address_from_secret(secret, network_type) ⇒ Object
- .public_from_secret(secret) ⇒ Object
Instance Method Summary collapse
- #calc_fee ⇒ Object
- #get_address_status(address) ⇒ Object
-
#initialize(node_url_set, network_type = :testnet) ⇒ NemController
constructor
A new instance of NemController.
- #prepare_tx(recipient_str, msg) ⇒ Object
- #send_transfer_tx(private_key) ⇒ Object
-
#set_log_path(dir_path) ⇒ Object
default log path : stdout.
Constructor Details
#initialize(node_url_set, network_type = :testnet) ⇒ NemController
Returns a new instance of NemController.
20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/record_on_chain/nem_controller.rb', line 20 def initialize( node_url_set , network_type = :testnet ) raise ArgumentError,"Node set must not be empty." if node_url_set.empty? raise ArgumentError,"Unknown network type.[:testnet,:mainnet]" unless @@NET_TYPES.include?(network_type.to_sym) # make node_pool from node_set node_objects = [] node_url_set.each do |url| node_object = Nem::Node.new( url: url ) node_objects.push( node_object ) end @node_pool = Nem::NodePool.new( node_objects ) @network_type = network_type.to_sym end |
Class Method Details
.address_from_public(public_key, network_type) ⇒ Object
11 12 13 |
# File 'lib/record_on_chain/nem_controller.rb', line 11 def self.address_from_public( public_key , network_type ) return Nem::Unit::Address.from_public_key( public_key , network_type.to_sym ).to_s end |
.address_from_secret(secret, network_type) ⇒ Object
15 16 17 18 |
# File 'lib/record_on_chain/nem_controller.rb', line 15 def self.address_from_secret( secret , network_type ) public_key = public_from_secret( secret ) return address_from_public( public_key , network_type.to_sym ) end |
.public_from_secret(secret) ⇒ Object
7 8 9 |
# File 'lib/record_on_chain/nem_controller.rb', line 7 def self.public_from_secret( secret ) return Nem::Keypair.new( secret ).public end |
Instance Method Details
#calc_fee ⇒ Object
48 49 50 51 52 |
# File 'lib/record_on_chain/nem_controller.rb', line 48 def calc_fee prepared? fee = Nem::Fee::Transfer.new( @tx ) return fee.to_i end |
#get_address_status(address) ⇒ Object
34 35 36 37 38 39 |
# File 'lib/record_on_chain/nem_controller.rb', line 34 def get_address_status( address ) endpoint = Nem::Endpoint::Account.new( @node_pool ) add = endpoint.find( address ) multisig = !add.cosignatories.empty? return { balance: add.balance , multisig: multisig } end |
#prepare_tx(recipient_str, msg) ⇒ Object
41 42 43 44 45 46 |
# File 'lib/record_on_chain/nem_controller.rb', line 41 def prepare_tx( recipient_str, msg ) check_address( recipient_str ) modified_address = modify_address( recipient_str ) # NOTE: Timestamp is set to -10 sec from Time.now.It prevent FAILURE_TIMESTAMP_TOO_FAR_IN_FUTURE @tx = Nem::Transaction::Transfer.new( modified_address, 0, msg, timestamp: Time.now() -10, network: @network_type ) end |
#send_transfer_tx(private_key) ⇒ Object
54 55 56 57 58 |
# File 'lib/record_on_chain/nem_controller.rb', line 54 def send_transfer_tx( private_key ) prepared? result = broadcast_transfer_tx( private_key ) return result end |
#set_log_path(dir_path) ⇒ Object
default log path : stdout
61 62 63 64 |
# File 'lib/record_on_chain/nem_controller.rb', line 61 def set_log_path( dir_path ) log_name = "nem_controller.log" Nem.logger = Logger.new( dir_path + log_name ) end |