mirror of
				https://github.com/Qortal/qortal-ui.git
				synced 2025-11-04 06:37:47 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			95 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
import PaymentTransaction from "./PaymentTransaction.js"
 | 
						|
import { QORT_DECIMALS } from "../constants.js"
 | 
						|
 | 
						|
/* ====================================
 | 
						|
EXTEND THE PAYMENT TRANSACTION YOU CLOWN
 | 
						|
====================================== */ 
 | 
						|
 | 
						|
export default class MessageTransaction extends PaymentTransaction{
 | 
						|
    constructor(){
 | 
						|
        super();
 | 
						|
        this.type = 17
 | 
						|
        this._key = this.constructor.utils.int64ToBytes(0);
 | 
						|
        this._isEncrypted = new Uint8Array(1); // Defaults to false
 | 
						|
        this._isText = new Uint8Array(1); // Defaults to false
 | 
						|
    }
 | 
						|
    
 | 
						|
    set message(message /* UTF8 String */){
 | 
						|
        // ...yes? no?
 | 
						|
        this.messageText = message;
 | 
						|
        
 | 
						|
        // Not sure about encoding here...
 | 
						|
        //this._message = message instanceof Uint8Array ? message : this.constructor.Base58.decode(message);
 | 
						|
        this._message = this.constructor.utils.stringtoUTF8Array(message)
 | 
						|
        this._messageLength = this.constructor.utils.int64ToBytes(this._message.length)
 | 
						|
    }
 | 
						|
    set isEncrypted(isEncrypted){
 | 
						|
        this._isEncrypted[0] = isEncrypted;
 | 
						|
    }
 | 
						|
    set isText(isText){
 | 
						|
        this._isText[0] = isText;
 | 
						|
    }
 | 
						|
    get _params(){
 | 
						|
        // dont extend super because paymentTrasaction is different
 | 
						|
        //const params = super.params;
 | 
						|
        return [
 | 
						|
            this._typeBytes,
 | 
						|
            this._timestampBytes,
 | 
						|
            this._lastReference,
 | 
						|
            this._keyPair.publicKey,
 | 
						|
            this._recipient,
 | 
						|
            this._key,
 | 
						|
            this._amountBytes,
 | 
						|
            this._messageLength,
 | 
						|
            this._message,
 | 
						|
            this._isEncrypted,
 | 
						|
            this._isText,
 | 
						|
            this._feeBytes
 | 
						|
        ]
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
//"use strict";
 | 
						|
//function generateSignatureMessageTransaction(keyPair, lastReference, recipient, amount, fee, timestamp, message, isText, isEncrypted) => {
 | 
						|
//    const data = generateMessageTransactionBase(keyPair.publicKey, lastReference, recipient, amount, fee, timestamp, message, isText, isEncrypted);
 | 
						|
//    return nacl.sign.detached(data, keyPair.privateKey);
 | 
						|
//}
 | 
						|
//
 | 
						|
//function generateMessageTransaction(keyPair, lastReference, recipient, amount, fee, timestamp, message, isText, isEncrypted, signature) => {
 | 
						|
//    return appendBuffer(generateMessageTransactionBase(keyPair.publicKey, lastReference, recipient, amount, fee, timestamp, message, isText, isEncrypted),
 | 
						|
//                        signature);
 | 
						|
//}
 | 
						|
//function generateMessageTransactionBase(publicKey, lastReference, recipient, amount, fee, timestamp, message, isText, isEncrypted) => {
 | 
						|
//    txType = TYPES.MESSAGE_TRANSACTION;
 | 
						|
//
 | 
						|
//    const typeBytes = int32ToBytes(txType);
 | 
						|
//    const timestampBytes = int64ToBytes(timestamp);
 | 
						|
//    const amountBytes = int64ToBytes(amount * 100000000);
 | 
						|
//    const feeBytes = int64ToBytes(fee * 100000000);
 | 
						|
//    const messageLength = int32ToBytes(message.length);
 | 
						|
//    const key = int64ToBytes(0);
 | 
						|
//
 | 
						|
//    isTextB = new Uint8Array(1);
 | 
						|
//    isTextB[0] = isText;
 | 
						|
//
 | 
						|
//    isEncryptedB = new Uint8Array(1);
 | 
						|
//    isEncryptedB[0] = isEncrypted;
 | 
						|
//
 | 
						|
//    let data = new Uint8Array();
 | 
						|
//
 | 
						|
//    data = appendBuffer(data, typeBytes);
 | 
						|
//    data = appendBuffer(data, timestampBytes);
 | 
						|
//    data = appendBuffer(data, lastReference);
 | 
						|
//    data = appendBuffer(data, publicKey);
 | 
						|
//    data = appendBuffer(data, recipient);
 | 
						|
//    data = appendBuffer(data, key);
 | 
						|
//    data = appendBuffer(data, amountBytes);
 | 
						|
//    data = appendBuffer(data, messageLength);
 | 
						|
//    data = appendBuffer(data, message);
 | 
						|
//    data = appendBuffer(data, isEncryptedB);
 | 
						|
//    data = appendBuffer(data, isTextB);
 | 
						|
//    data = appendBuffer(data, feeBytes);
 | 
						|
//
 | 
						|
//    return data;
 | 
						|
//}
 |