Skip to content

Instantly share code, notes, and snippets.

@pnghai
Last active September 27, 2021 12:43
Show Gist options
  • Select an option

  • Save pnghai/9a2ffa72b9a42a48fdbbce366b3c4fcd to your computer and use it in GitHub Desktop.

Select an option

Save pnghai/9a2ffa72b9a42a48fdbbce366b3c4fcd to your computer and use it in GitHub Desktop.
Tron Address Generator with Ruby on Rails
require 'base58'
require 'digest'
require 'digest-sha3-patched-ruby-3'
def keccak256(data)
Digest::SHA3.digest(data, 256)
end
def verifying_key_to_addr(pub_key)
pub_key_bn = [pub_key].pack("H*")
kec = keccak256(pub_key_bn)
primitive_addr = "\x41".b << kec[-20..-1]
digest = Digest::SHA2.digest(Digest::SHA2.digest(primitive_addr))
Base58.binary_to_base58(primitive_addr << digest[0,4], :bitcoin)
end
def generate
key = OpenSSL::PKey::EC.new("secp256k1")
key.generate_key
private_key = key.private_key
public_key = key.public_key.to_bn.to_s(16)[2,128].downcase
addr = verifying_key_to_addr(public_key)
[addr, private_key.to_s(16).downcase]
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment