@coolwallet/ton
Version:
59 lines (55 loc) • 8.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.checkTransferTokenTransaction = checkTransferTokenTransaction;
exports.checkTransferTransaction = checkTransferTransaction;
var _bignumber = _interopRequireDefault(require("bignumber.js"));
var _tonweb = _interopRequireDefault(require("tonweb"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
// The Pro card cannot display 9-digit integer numbers, so the transaction amount is limited
function checkAmountCanDisplayOnProCard(transferAmount, decimals) {
if (new _bignumber["default"](transferAmount).shiftedBy(-decimals).isGreaterThanOrEqualTo('100000000')) throw new Error("checkParams: pro card cannot display 9 digits");
}
// The current script does not support writing 0.
function checkAmountNotZero(amount) {
if (new _bignumber["default"](amount).isZero()) throw new Error("checkParams: not support amount 0");
}
// Check address.
function checkAddressIsValid(address) {
if (!_tonweb["default"].Address.isValid(address)) throw new Error("checkParams: address is invalid. address=".concat(address));
if (new _tonweb["default"].Address(address).wc !== 0) throw new Error("checkParams: we did not support other chain. address=".concat(address));
}
// The script reserves 64 bytes for memo.
function checkMemoLength() {
var memo = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
if (new TextEncoder().encode(memo).byteLength > 64) throw new Error("checkParams: memo too long");
}
function checkTransferTransaction(transaction) {
var amount = transaction.amount,
toAddress = transaction.toAddress,
payload = transaction.payload;
var TON_DECIMALS = 9;
checkAmountCanDisplayOnProCard(amount, TON_DECIMALS);
checkAmountNotZero(amount);
checkAddressIsValid(toAddress);
checkMemoLength(payload);
}
function checkTransferTokenTransaction(transaction) {
var amount = transaction.amount,
fromTokenAccount = transaction.toAddress,
payload = transaction.payload;
var jettonAmount = payload.jettonAmount,
toAddress = payload.toAddress,
forwardAmount = payload.forwardAmount,
forwardPayload = payload.forwardPayload,
responseAddress = payload.responseAddress;
checkAmountNotZero(amount);
checkAmountNotZero(jettonAmount);
checkAmountNotZero(forwardAmount);
checkAddressIsValid(fromTokenAccount);
checkAddressIsValid(toAddress);
checkAddressIsValid(responseAddress);
checkMemoLength(forwardPayload);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmlnbnVtYmVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfdG9ud2ViIiwib2JqIiwiX19lc01vZHVsZSIsImNoZWNrQW1vdW50Q2FuRGlzcGxheU9uUHJvQ2FyZCIsInRyYW5zZmVyQW1vdW50IiwiZGVjaW1hbHMiLCJCaWdOdW1iZXIiLCJzaGlmdGVkQnkiLCJpc0dyZWF0ZXJUaGFuT3JFcXVhbFRvIiwiRXJyb3IiLCJjaGVja0Ftb3VudE5vdFplcm8iLCJhbW91bnQiLCJpc1plcm8iLCJjaGVja0FkZHJlc3NJc1ZhbGlkIiwiYWRkcmVzcyIsIlRvbldlYiIsIkFkZHJlc3MiLCJpc1ZhbGlkIiwiY29uY2F0Iiwid2MiLCJjaGVja01lbW9MZW5ndGgiLCJtZW1vIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiVGV4dEVuY29kZXIiLCJlbmNvZGUiLCJieXRlTGVuZ3RoIiwiY2hlY2tUcmFuc2ZlclRyYW5zYWN0aW9uIiwidHJhbnNhY3Rpb24iLCJ0b0FkZHJlc3MiLCJwYXlsb2FkIiwiVE9OX0RFQ0lNQUxTIiwiY2hlY2tUcmFuc2ZlclRva2VuVHJhbnNhY3Rpb24iLCJmcm9tVG9rZW5BY2NvdW50IiwiamV0dG9uQW1vdW50IiwiZm9yd2FyZEFtb3VudCIsImZvcndhcmRQYXlsb2FkIiwicmVzcG9uc2VBZGRyZXNzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2NoZWNrUGFyYW1zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCBUb25XZWIgZnJvbSAndG9ud2ViJztcbmltcG9ydCB7IFRyYW5zZmVyVG9rZW5UcmFuc2FjdGlvbiwgVHJhbnNmZXJUcmFuc2FjdGlvbiB9IGZyb20gJy4uL2NvbmZpZy90eXBlcyc7XG5cbi8vIFRoZSBQcm8gY2FyZCBjYW5ub3QgZGlzcGxheSA5LWRpZ2l0IGludGVnZXIgbnVtYmVycywgc28gdGhlIHRyYW5zYWN0aW9uIGFtb3VudCBpcyBsaW1pdGVkXG5mdW5jdGlvbiBjaGVja0Ftb3VudENhbkRpc3BsYXlPblByb0NhcmQodHJhbnNmZXJBbW91bnQ6IHN0cmluZywgZGVjaW1hbHM6IHN0cmluZyB8IG51bWJlcik6IHZvaWQge1xuICBpZiAobmV3IEJpZ051bWJlcih0cmFuc2ZlckFtb3VudCkuc2hpZnRlZEJ5KC1kZWNpbWFscykuaXNHcmVhdGVyVGhhbk9yRXF1YWxUbygnMTAwMDAwMDAwJykpXG4gICAgdGhyb3cgbmV3IEVycm9yKGBjaGVja1BhcmFtczogcHJvIGNhcmQgY2Fubm90IGRpc3BsYXkgOSBkaWdpdHNgKTtcbn1cblxuLy8gVGhlIGN1cnJlbnQgc2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgd3JpdGluZyAwLlxuZnVuY3Rpb24gY2hlY2tBbW91bnROb3RaZXJvKGFtb3VudDogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChuZXcgQmlnTnVtYmVyKGFtb3VudCkuaXNaZXJvKCkpIHRocm93IG5ldyBFcnJvcihgY2hlY2tQYXJhbXM6IG5vdCBzdXBwb3J0IGFtb3VudCAwYCk7XG59XG5cbi8vIENoZWNrIGFkZHJlc3MuXG5mdW5jdGlvbiBjaGVja0FkZHJlc3NJc1ZhbGlkKGFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoIVRvbldlYi5BZGRyZXNzLmlzVmFsaWQoYWRkcmVzcykpIHRocm93IG5ldyBFcnJvcihgY2hlY2tQYXJhbXM6IGFkZHJlc3MgaXMgaW52YWxpZC4gYWRkcmVzcz0ke2FkZHJlc3N9YCk7XG4gIGlmIChuZXcgVG9uV2ViLkFkZHJlc3MoYWRkcmVzcykud2MgIT09IDApIHRocm93IG5ldyBFcnJvcihgY2hlY2tQYXJhbXM6IHdlIGRpZCBub3Qgc3VwcG9ydCBvdGhlciBjaGFpbi4gYWRkcmVzcz0ke2FkZHJlc3N9YCk7XG59XG5cbi8vIFRoZSBzY3JpcHQgcmVzZXJ2ZXMgNjQgYnl0ZXMgZm9yIG1lbW8uXG5mdW5jdGlvbiBjaGVja01lbW9MZW5ndGgobWVtbzogc3RyaW5nID0gJycpOiB2b2lkIHtcbiAgaWYgKG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShtZW1vKS5ieXRlTGVuZ3RoID4gNjQpIHRocm93IG5ldyBFcnJvcihgY2hlY2tQYXJhbXM6IG1lbW8gdG9vIGxvbmdgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrVHJhbnNmZXJUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNmZXJUcmFuc2FjdGlvbik6IHZvaWQge1xuICBjb25zdCB7IGFtb3VudCwgdG9BZGRyZXNzLCBwYXlsb2FkIH0gPSB0cmFuc2FjdGlvbjtcblxuICBjb25zdCBUT05fREVDSU1BTFMgPSA5O1xuXG4gIGNoZWNrQW1vdW50Q2FuRGlzcGxheU9uUHJvQ2FyZChhbW91bnQsIFRPTl9ERUNJTUFMUyk7XG5cbiAgY2hlY2tBbW91bnROb3RaZXJvKGFtb3VudCk7XG5cbiAgY2hlY2tBZGRyZXNzSXNWYWxpZCh0b0FkZHJlc3MpO1xuXG4gIGNoZWNrTWVtb0xlbmd0aChwYXlsb2FkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrVHJhbnNmZXJUb2tlblRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2ZlclRva2VuVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgY29uc3QgeyBhbW91bnQsIHRvQWRkcmVzczogZnJvbVRva2VuQWNjb3VudCwgcGF5bG9hZCB9ID0gdHJhbnNhY3Rpb247XG5cbiAgY29uc3QgeyBqZXR0b25BbW91bnQsIHRvQWRkcmVzcywgZm9yd2FyZEFtb3VudCwgZm9yd2FyZFBheWxvYWQsIHJlc3BvbnNlQWRkcmVzcyB9ID0gcGF5bG9hZDtcblxuICBjaGVja0Ftb3VudE5vdFplcm8oYW1vdW50KTtcbiAgY2hlY2tBbW91bnROb3RaZXJvKGpldHRvbkFtb3VudCk7XG4gIGNoZWNrQW1vdW50Tm90WmVybyhmb3J3YXJkQW1vdW50KTtcblxuICBjaGVja0FkZHJlc3NJc1ZhbGlkKGZyb21Ub2tlbkFjY291bnQpO1xuICBjaGVja0FkZHJlc3NJc1ZhbGlkKHRvQWRkcmVzcyk7XG4gIGNoZWNrQWRkcmVzc0lzVmFsaWQocmVzcG9uc2VBZGRyZXNzKTtcblxuICBjaGVja01lbW9MZW5ndGgoZm9yd2FyZFBheWxvYWQpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQTRCLFNBQUFELHVCQUFBRyxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsZ0JBQUFBLEdBQUE7QUFHNUI7QUFDQSxTQUFTRSw4QkFBOEJBLENBQUNDLGNBQXNCLEVBQUVDLFFBQXlCLEVBQVE7RUFDL0YsSUFBSSxJQUFJQyxxQkFBUyxDQUFDRixjQUFjLENBQUMsQ0FBQ0csU0FBUyxDQUFDLENBQUNGLFFBQVEsQ0FBQyxDQUFDRyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsRUFDeEYsTUFBTSxJQUFJQyxLQUFLLGdEQUFnRCxDQUFDO0FBQ3BFOztBQUVBO0FBQ0EsU0FBU0Msa0JBQWtCQSxDQUFDQyxNQUFjLEVBQVE7RUFDaEQsSUFBSSxJQUFJTCxxQkFBUyxDQUFDSyxNQUFNLENBQUMsQ0FBQ0MsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLElBQUlILEtBQUssb0NBQW9DLENBQUM7QUFDMUY7O0FBRUE7QUFDQSxTQUFTSSxtQkFBbUJBLENBQUNDLE9BQWUsRUFBUTtFQUNsRCxJQUFJLENBQUNDLGtCQUFNLENBQUNDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDSCxPQUFPLENBQUMsRUFBRSxNQUFNLElBQUlMLEtBQUssNkNBQUFTLE1BQUEsQ0FBNkNKLE9BQU8sQ0FBRSxDQUFDO0VBQzVHLElBQUksSUFBSUMsa0JBQU0sQ0FBQ0MsT0FBTyxDQUFDRixPQUFPLENBQUMsQ0FBQ0ssRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLElBQUlWLEtBQUsseURBQUFTLE1BQUEsQ0FBeURKLE9BQU8sQ0FBRSxDQUFDO0FBQzlIOztBQUVBO0FBQ0EsU0FBU00sZUFBZUEsQ0FBQSxFQUEwQjtFQUFBLElBQXpCQyxJQUFZLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLEVBQUU7RUFDeEMsSUFBSSxJQUFJRyxXQUFXLENBQUMsQ0FBQyxDQUFDQyxNQUFNLENBQUNMLElBQUksQ0FBQyxDQUFDTSxVQUFVLEdBQUcsRUFBRSxFQUFFLE1BQU0sSUFBSWxCLEtBQUssNkJBQTZCLENBQUM7QUFDbkc7QUFFTyxTQUFTbUIsd0JBQXdCQSxDQUFDQyxXQUFnQyxFQUFRO0VBQy9FLElBQVFsQixNQUFNLEdBQXlCa0IsV0FBVyxDQUExQ2xCLE1BQU07SUFBRW1CLFNBQVMsR0FBY0QsV0FBVyxDQUFsQ0MsU0FBUztJQUFFQyxPQUFPLEdBQUtGLFdBQVcsQ0FBdkJFLE9BQU87RUFFbEMsSUFBTUMsWUFBWSxHQUFHLENBQUM7RUFFdEI3Qiw4QkFBOEIsQ0FBQ1EsTUFBTSxFQUFFcUIsWUFBWSxDQUFDO0VBRXBEdEIsa0JBQWtCLENBQUNDLE1BQU0sQ0FBQztFQUUxQkUsbUJBQW1CLENBQUNpQixTQUFTLENBQUM7RUFFOUJWLGVBQWUsQ0FBQ1csT0FBTyxDQUFDO0FBQzFCO0FBRU8sU0FBU0UsNkJBQTZCQSxDQUFDSixXQUFxQyxFQUFRO0VBQ3pGLElBQVFsQixNQUFNLEdBQTJDa0IsV0FBVyxDQUE1RGxCLE1BQU07SUFBYXVCLGdCQUFnQixHQUFjTCxXQUFXLENBQXBEQyxTQUFTO0lBQW9CQyxPQUFPLEdBQUtGLFdBQVcsQ0FBdkJFLE9BQU87RUFFcEQsSUFBUUksWUFBWSxHQUFnRUosT0FBTyxDQUFuRkksWUFBWTtJQUFFTCxTQUFTLEdBQXFEQyxPQUFPLENBQXJFRCxTQUFTO0lBQUVNLGFBQWEsR0FBc0NMLE9BQU8sQ0FBMURLLGFBQWE7SUFBRUMsY0FBYyxHQUFzQk4sT0FBTyxDQUEzQ00sY0FBYztJQUFFQyxlQUFlLEdBQUtQLE9BQU8sQ0FBM0JPLGVBQWU7RUFFL0U1QixrQkFBa0IsQ0FBQ0MsTUFBTSxDQUFDO0VBQzFCRCxrQkFBa0IsQ0FBQ3lCLFlBQVksQ0FBQztFQUNoQ3pCLGtCQUFrQixDQUFDMEIsYUFBYSxDQUFDO0VBRWpDdkIsbUJBQW1CLENBQUNxQixnQkFBZ0IsQ0FBQztFQUNyQ3JCLG1CQUFtQixDQUFDaUIsU0FBUyxDQUFDO0VBQzlCakIsbUJBQW1CLENBQUN5QixlQUFlLENBQUM7RUFFcENsQixlQUFlLENBQUNpQixjQUFjLENBQUM7QUFDakMiLCJpZ25vcmVMaXN0IjpbXX0=