Class: String

Inherits:
Object show all
Defined in:
lib/bitcoin.rb

Instance Method Summary collapse

Instance Method Details

#bthObject

binary convert to hex string



103
104
105
# File 'lib/bitcoin.rb', line 103

def bth
  unpack('H*').first
end

#htbObject

hex string convert to binary



108
109
110
# File 'lib/bitcoin.rb', line 108

def htb
  [self].pack('H*')
end

#opcodeObject

get opcode



118
119
120
121
122
123
124
125
126
127
# File 'lib/bitcoin.rb', line 118

def opcode
  case encoding
  when Encoding::ASCII_8BIT
    each_byte.next
  when Encoding::US_ASCII
    ord
  else
    to_i
  end
end

#opcode?Boolean



129
130
131
# File 'lib/bitcoin.rb', line 129

def opcode?
  !pushdata?
end

#push_opcode?Boolean



133
134
135
# File 'lib/bitcoin.rb', line 133

def push_opcode?
  [Bitcoin::Opcodes::OP_PUSHDATA1, Bitcoin::Opcodes::OP_PUSHDATA2, Bitcoin::Opcodes::OP_PUSHDATA4].include?(opcode)
end

#pushdata?Boolean

whether data push only?



138
139
140
# File 'lib/bitcoin.rb', line 138

def pushdata?
  opcode <= Bitcoin::Opcodes::OP_PUSHDATA4 && opcode > Bitcoin::Opcodes::OP_0
end

#pushed_dataObject



142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/bitcoin.rb', line 142

def pushed_data
  return nil unless pushdata?
  offset = 1
  case opcode
  when Bitcoin::Opcodes::OP_PUSHDATA1
    offset += 1
  when Bitcoin::Opcodes::OP_PUSHDATA2
    offset += 2
  when Bitcoin::Opcodes::OP_PUSHDATA4
    offset += 4
  end
  self[offset..-1]
end

#rhexObject

reverse hex string endian



113
114
115
# File 'lib/bitcoin.rb', line 113

def rhex
  htb.reverse.bth
end