Generate Address Offline

Python

import ecdsa
import base58
import ecdsa
import random
​
from Crypto.Hash import keccak
​
​
def keccak256(data):
hasher = keccak.new(digest_bits=256)
hasher.update(data)
return hasher.digest()
​
​
def get_signing_key(raw_priv):
return ecdsa.SigningKey.from_string(raw_priv, curve=ecdsa.SECP256k1)
​
​
def verifying_key_to_addr(key):
pub_key = key.to_string()
primitive_addr = b'\x41' + keccak256(pub_key)[-20:]
# 0 (zero), O (capital o), I (capital i) and l (lower case L)
addr = base58.b58encode_check(primitive_addr)
return addr
​
​
while True:
raw = bytes(random.sample(range(0, 256), 32))
# raw = bytes.fromhex('a0a7acc6256c3..........b9d7ec23e0e01598d152')
key = get_signing_key(raw)
addr = verifying_key_to_addr(key.get_verifying_key()).decode()
print('Address: ', addr)
print('Address(hex):', base58.b58decode_check(addr.encode()).hex())
print('Public Key: ', key.get_verifying_key().to_string().hex())
print('Private Key: ', raw.hex())
​
break
​

Rust

Ref: https://github.com/andelf/rust-tron/blob/master/keys/src/address.rs​

PHP

Ref: https://github.com/tronprotocol/documentation/blob/master/TRX_CN/index.php​

JavaScript

const TronWeb = require('tronweb');
​
console.log(TronWeb.utils.accounts.generateAccount());

​

Java

Ref: https://github.com/ki5fpl/tronj/blob/master/client/src/main/java/com/github/ki5fpl/tronj/client/TronClient.java#L49​

​