Class: Mnam::TransactionBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/mnam/transaction_builder.rb

Defined Under Namespace

Classes: Transaction, TransactionFee, TransactionType

Instance Method Summary collapse

Instance Method Details

#create_delegate(username, secret, second_secret) ⇒ Object



215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
# File 'lib/mnam/transaction_builder.rb', line 215

def create_delegate(username, secret, second_secret)
  key = Mnam::Util::Crypto.get_key(secret)
  second_key = Mnam::Util::Crypto.get_key(second_secret) if second_secret

  transaction = Transaction.new(
    :type => Transaction::Type::DELEGATE,
    :fee => Transaction::Fee::DELEGATE,
    :sender_public_key => key.public_key.unpack('H*').first,
    :amount => 0,
    :asset => {
      :delegate => {
        :username => username,
        :public_key => key.public_key.unpack('H*').first
      }
    }
  )

  transaction.sign_and_create_id(key, second_key)

  transaction
end

#create_multisignature(secret, second_secret, keysgroup, lifetime, min) ⇒ Object



237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
# File 'lib/mnam/transaction_builder.rb', line 237

def create_multisignature(secret, second_secret, keysgroup, lifetime, min)
  key = Mnam::Util::Crypto.get_key(secret)
  second_key = Mnam::Util::Crypto.get_key(second_secret) if second_secret

  transaction = Transaction.new(
    :type => Transaction::Type::MULTISIGNATURE,
    :fee => (keysgroup.size + 1) * Transaction::Fee::MULTISIGNATURE_BASE,
    :sender_public_key => key.public_key.unpack('H*').first,
    :amount => 0,
    :asset => {
      :multisignature => {
        :min => min,
        :lifetime => lifetime,
        :keysgroup => keysgroup
      }
    }
  )

  transaction.sign_and_create_id(key, second_key)

  transaction
end

#create_second_signature(second_secret, first_secret) ⇒ Object



176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
# File 'lib/mnam/transaction_builder.rb', line 176

def create_second_signature(second_secret, first_secret)
  key = Mnam::Util::Crypto.get_key(first_secret)
  second_key = Mnam::Util::Crypto.get_key(second_secret) if second_secret

  transaction = Transaction.new(
    :type => Transaction::Type::SECOND_SIGNATURE,
    :fee => Transaction::Fee::SECOND_SIGNATURE,
    :sender_public_key => key.public_key.unpack('H*').first,
    :amount => 0,
    :asset => {
      :signature => {
        :public_key => second_key.public_key.unpack('H*').first
      }
    }
  )

  transaction.sign_and_create_id(key)

  return transaction
end

#create_transfer(recipient_id, amount, vendor_field, secret, second_secret = nil) ⇒ Object



159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# File 'lib/mnam/transaction_builder.rb', line 159

def create_transfer(recipient_id, amount, vendor_field, secret, second_secret = nil)
  key = Mnam::Util::Crypto.get_key(secret)
  second_key = Mnam::Util::Crypto.get_key(second_secret) if second_secret

  transaction = Transaction.new(
    :type => Transaction::Type::TRANSFER,
    :fee => Transaction::Fee::TRANSFER,
    :sender_public_key => key.public_key.unpack('H*').first,
    :recipient_id => recipient_id,
    :amount => amount,
    :vendor_field => vendor_field,
  )
  transaction.sign_and_create_id(key, second_key)

  transaction
end

#create_vote(votes, secret, second_secret, network_address) ⇒ Object



197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
# File 'lib/mnam/transaction_builder.rb', line 197

def create_vote(votes, secret, second_secret, network_address)
  key = Mnam::Util::Crypto.get_key(secret)
  second_key = Mnam::Util::Crypto.get_key(second_secret) if second_secret

  transaction = Transaction.new(
    :type => Transaction::Type::VOTE,
    :fee => Transaction::Fee::VOTE,
    :sender_public_key => key.public_key.unpack('H*').first,
    :recipient_id => Mnam::Util::Crypto.get_address(key, network_address),
    :amount => 0,
    :asset => {:votes => votes}
  )

  transaction.sign_and_create_id(key, second_key)

  transaction
end