TRON 개발자 가이드 — TRC10 & TRX 거래소에서 거래

(출처:https://medium.com/@Tronfoundation/tron-developer-guide-trc10-trx-transfer-in-exchanges-a2cd89518d07)

소개

TRON에서 TRX 또는 TRC10 트랜잭션을 감지하는 데는 4 가지 유형의 계약이 있습니다.

  • TransferContract (시스템 컨트랙트유형)
  • TransferAssetContract (시스템 컨트랙트유형)
  • CreateSmartContract (스마트 컨트랙트 유형)
  • TriggerSmartContract (스마트 컨트랙트 유형)

Transaction, TransactionInfoBlock모든 스마트 컨트랙트거래 정보가 포함되어 있습니다.

전송 검색 및 기록

두 컨트랙트 TransferContractTransferAssetContract각각 TRX 및 TRC10를 전송하는 데 사용 시스템 컨트랙트입니다. 트랜잭션에는 하나의 계약 만 포함되므로 조회 트랜잭션은 인터페이스를 사용하여 장기 구매 계약에 대한 특정 정보를 확보합니다 GetTransactionbyId. GetBlockByNum패키지 된 트랜잭션의 블록 정보를 검색하는 데 사용되며 . Block사용하거나 GetTransactionInfoById특정 트랜잭션 정보를 얻을 수 있습니다. 루트 트랜잭션 결과를 확인하세요. Transaction.Result.code가 실패하면이 트랜잭션을 거부해주세요. 전송이 발생하지 않았습니다. 체크인 type하여 Transaction.raw계약 유형 정보 ( TransferContract또는 TransferAssetContract)를 받으시고. 선택 parameterTransaction.raw따라 계약의 세부 사항을 얻을 type을 가져오세요.

TransferContract

  • owner_address( 바이트 )는 TRX 발신자 주소입니다. 읽을 수있는 TRON 주소를 표시하려면 바이트를 base58Check 문자열로 변환해야합니다.
  • to_address( Bytes )는 TRX 수신자 주소입니다. 바이트를 base58Check 문자열로 변환해야합니다.
  • amount( int64 )는 계약 주소로 전송 된 TRX 금액입니다.

TransferAssetContract

  • asset_name( String)은 TRC10 ID입니다. 확인할 수있는 TRON 주소를 표시하기 위해 변환 할 필요가 없습니다. (이 매개 변수는 TRC10 토큰의 이름을 나타 내기 위해 사용되며, 동일한 토큰을 허용하기 위해 TRON 개선 제안서 # 14가 통과 된 후 TRC10 ID로 수정되었습니다.)
  • owner_address( Bytes )는 TRC10 보낸 사람 주소입니다. 확인할 수있는 TRON 주소를 표시하려면 바이트를 base58Check 문자열로 변환해야합니다.
  • to_address( Bytes )는 TRC10 수신자 주소입니다. 확인할 수있는 TRON 주소를 표시하려면 바이트를 base58Check 문자열로 변환해야합니다.
  • amount( int64 )는 계약 주소로 전송 된 TRC10 금액입니다.

CreateSmartContractTriggerSmartContract대한 검색. GetBlockByNum패키지 된 트랜잭션의 블록 정보를 검색하는 데 사용하십시오 . . Block사용하거나 GetTransactionInfoById특정 트랜잭션 정보를 얻을 수 있습니다. 루트 트랜잭션 결과를 확인하세요. Transaction.Result.code가 실패하면이 트랜잭션을 거부해주세요. 전송이 발생하지 않았습니다. 체크인 type하여 Transaction.raw계약 유형 정보 ( TransferContract또는 TransferAssetContract)를 받으시고. 선택 parameterTransaction.raw따라 계약의 세부 사항을 얻을 type을 가져오세요.

CreateSmartContract

  • owner_address( 바이트 )는 TRX 또는 TRC10 보낸 사람 주소입니다. 확인할수 있는 TRON 주소를 표시하려면 바이트를 base58Check 문자열로 변환해야합니다.
  • SmartContract.contract_address( 바이트 )를 TRX 또는 TRC10 수신자의 주소이며 MUST BE 스마트 계약 주소를 입력합니다. 런타임에서 생성으로 인해에서 검색 할 수 없습니다 Transaction. 대신, 사용 GetTransactionInfoById얻을 contract_address에서 TransactionInfo. 읽을 수있는 TRON 주소를 표시하려면 데이터를 Byte에서 base58Check String으로 변환해야합니다.
  • SmartContract.call_value( int64 )는 계약 주소로 전송 된 TRX 금액입니다.
  • call_token_value( int64 )는 계약 주소로 전송 된 TRC10 금액입니다.
  • token_id( String )은 관련된 TRC10 ID입니다. 읽을 수있는 TRON 주소를 표시하기 위해 변환 할 필요가 없습니다.

TriggerSmartContract

  • owner_address( 바이트 )는 TRX 또는 TRC10 보낸 사람 주소입니다. 확인할수 있는 TRON 주소를 표시하려면 주소를 Byte에서 base58Check String으로 변환해야합니다.
  • contract_address( 바이트 )를 TRX 또는 TRC10 수신자의 주소이며 MUST BE스마트 계약 주소를 입력합니다. 확인할 수있는 TRON 주소를 표시하려면 주소를 Byte에서 base58Check String으로 변환해야합니다.
  • call_value( int64 )는 계약 주소로 전송 된 TRX 금액입니다.
  • call_token_value( int64 )는 계약 주소로 전송 된 TRC10 금액입니다.
  • token_id( String )은 관련된 TRC10 ID입니다.

Check Transfer in InternalTransaction

  • caller_address( Bytes )는 TRX 또는 TRC10 토큰 발신자 주소입니다. 확인할 수있는 TRON 주소를 표시하려면 바이트를 base58Check 문자열로 변환해야합니다.
  • transferTo_address( Bytes )는 TRX 또는 TRC10 토큰 수신자 주소입니다. 확인할 수있는 TRON 주소를 표시하려면 바이트를 base58Check 문자열로 변환해야합니다.
  • CallValueInfo 전송 세부 정보 목록입니다.
  • callvalue( int64 ) tokenId는 비어있는 경우 TRX 금액을 나타냅니다 . 그렇지 않으면 토큰 전송 값입니다.
  • tokenId( String )은 토큰 식별자(identifier)입니다. rejected이 내부 트랜잭션이 실패했는지 여부를 나타내며. rejected것이 true라면 일부 오류가 발생하기 때문에, 현재의 내부 거래를 처리 할 필요가 없습니다. 그렇지 않으면 값은 false성공적인 트랜잭션 을 의미합니다.

Related Protobuf

TransferContract

message TransferContract {
bytes owner_address = 1;
bytes to_address = 2;
int64 amount = 3;
}

TransferAssetContract

message TransferAssetContract {
bytes asset_name = 1; // this field is token name before the proposal ALLOW_SAME_TOKEN_NAME is active, otherwise it is token id and token is should be in string format.
bytes owner_address = 2;
bytes to_address = 3;
int64 amount = 4;
}

CreateSmartContract

message CreateSmartContract {
bytes owner_address = 1;
SmartContract new_contract = 2;
int64 call_token_value = 3;
int64 token_id = 4;
}

TriggerSmartContract

message TriggerSmartContract {
bytes owner_address = 1;
bytes contract_address = 2;
int64 call_value = 3;
bytes data = 4;
int64 call_token_value = 5;
int64 token_id = 6;
}

Transaction

message Transaction {
message Contract {
enum ContractType {
AccountCreateContract = 0;
TransferContract = 1;
TransferAssetContract = 2;
VoteAssetContract = 3;
VoteWitnessContract = 4;
WitnessCreateContract = 5;
AssetIssueContract = 6;
WitnessUpdateContract = 8;
ParticipateAssetIssueContract = 9;
AccountUpdateContract = 10;
FreezeBalanceContract = 11;
UnfreezeBalanceContract = 12;
WithdrawBalanceContract = 13;
UnfreezeAssetContract = 14;
UpdateAssetContract = 15;
ProposalCreateContract = 16;
ProposalApproveContract = 17;
ProposalDeleteContract = 18;
SetAccountIdContract = 19;
CustomContract = 20;
// BuyStorageContract = 21;
// BuyStorageBytesContract = 22;
// SellStorageContract = 23;
CreateSmartContract = 30;
TriggerSmartContract = 31;
GetContract = 32;
UpdateSettingContract = 33;
ExchangeCreateContract = 41;
ExchangeInjectContract = 42;
ExchangeWithdrawContract = 43;
ExchangeTransactionContract = 44;
UpdateEnergyLimitContract = 45;
AccountPermissionUpdateContract = 46;
PermissionAddKeyContract = 47;
PermissionUpdateKeyContract = 48;
PermissionDeleteKeyContract = 49;
}
ContractType type = 1;
google.protobuf.Any parameter = 2;
bytes provider = 3;
bytes ContractName = 4;
}
message Result {
enum code {
SUCESS = 0;
FAILED = 1;
}
enum contractResult {
DEFAULT = 0;
SUCCESS = 1;
REVERT = 2;
BAD_JUMP_DESTINATION = 3;
OUT_OF_MEMORY = 4;
PRECOMPILED_CONTRACT = 5;
STACK_TOO_SMALL = 6;
STACK_TOO_LARGE = 7;
ILLEGAL_OPERATION = 8;
STACK_OVERFLOW = 9;
OUT_OF_ENERGY = 10;
OUT_OF_TIME = 11;
JVM_STACK_OVER_FLOW = 12;
UNKNOWN = 13;
}
int64 fee = 1;
code ret = 2;
contractResult contractRet = 3;
string assetIssueID = 14;
int64 withdraw_amount = 15;
int64 unfreeze_amount = 16;
int64 exchange_received_amount = 18;
int64 exchange_inject_another_amount = 19;
int64 exchange_withdraw_another_amount = 20;
int64 exchange_id = 21;
}
message raw {
bytes ref_block_bytes = 1;
int64 ref_block_num = 3;
bytes ref_block_hash = 4;
int64 expiration = 8;
repeated authority auths = 9;
// data not used
bytes data = 10;
//only support size = 1, repeated list here for extension
repeated Contract contract = 11;
// scripts not used
bytes scripts = 12;
int64 timestamp = 14;
int64 fee_limit = 18;
}
raw raw_data = 1;
// only support size = 1, repeated list here for muti-sig extension
repeated bytes signature = 2;
repeated Result ret = 5;
}

TransactionInfo

message TransactionInfo {
enum code {
SUCESS = 0;
FAILED = 1;
}
message Log {
bytes address = 1;
repeated bytes topics = 2;
bytes data = 3;
}
bytes id = 1;
int64 fee = 2;
int64 blockNumber = 3;
int64 blockTimeStamp = 4;
repeated bytes contractResult = 5;
bytes contract_address = 6;
ResourceReceipt receipt = 7;
repeated Log log = 8;
code result = 9;
bytes resMessage = 10;
string assetIssueID = 14;
int64 withdraw_amount = 15;
int64 unfreeze_amount = 16;
repeated InternalTransaction internal_transactions = 17;
int64 exchange_received_amount = 18;
int64 exchange_inject_another_amount = 19;
int64 exchange_withdraw_another_amount = 20;
int64 exchange_id = 21;
}

Block

message Block {
repeated Transaction transactions = 1;
BlockHeader block_header = 2;
}

더많은 정보를 확인하시려면 링크를 참조해 주세요.

TRON 공식 사이트: https://tron.network/
kakao 오픈 채팅방: https://open.kakao.com/o/grAla4Q
kakao 1:1문의 :http://pf.kakao.com/_ttZvj
Twitter: https://twitter.com/TRON_KOR
Face Book 그룹방: https://www.facebook.com/groups/322128495011060/?source_id=144555002795817
Telegram 공식방 :https://t.me/tronnetworkKR