forked from tzConnectBerlin/peppermint
-
Notifications
You must be signed in to change notification settings - Fork 0
/
autofill_test.mjs
91 lines (82 loc) · 2.5 KB
/
autofill_test.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import { createRequire } from 'module'
import { TezosToolkit } from '@taquito/taquito'
import { InMemorySigner } from '@taquito/signer'
const require = createRequire(import.meta.url);
require('console-stamp')(console);
const GAS_SAFETY_FACTOR = 0.05;
const OPG_FEE_MARGIN = 6000;
const FEE_PER_GAS = 0.1;
const FEE_PER_BYTE = 1;
const BASE_FEE = 100;
const set_better_limits = function(op, estimate) {
let milligas_margin = Math.max(estimate._milligasLimit * GAS_SAFETY_FACTOR, 100000);
let gas_limit = Math.ceil((estimate._milligasLimit + milligas_margin) / 1000);
op.gasLimit = gas_limit;
op.storageLimit = estimate._storageLimit;
op.fee = Math.ceil(estimate.opSize * FEE_PER_BYTE + gas_limit * FEE_PER_GAS) + BASE_FEE;
return op;
}
const add_fee_margin = function(opg_list) {
let opg_size = opg_list.length;
let margin_per_op = Math.max(Math.ceil(OPG_FEE_MARGIN / opg_size), BASE_FEE);
opg_list.foreach((op) => {
let fee = op.fee + margin_per_op;
op.fee = fee;
});
return opg_list
}
const operations = {
tez_transfer: function({ to, amount }) {
return {
to,
amount
};
}
};
const init = async function(config) {
let tezos = new TezosToolkit(config.rpcUrl);
let signer = new InMemorySigner(config.privateKey);
let address = await signer.publicKeyHash();
tezos.setSignerProvider(signer);
// try {
// let est = await tezos.estimate.transfer({ from: address, to: 'tz2KmhM6HHkBCRzN1mkyGfB1vTPid4PNvAbc', amount: 0.1});
// console.log(est);
// } catch (err) {
// console.log(err);
// }
let contract = await tezos.contract.at('KT1PptVxoGBiLbtJr2kzXeUsBc2qRAsM7HKS');
try {
let params = [{
from_: address,
txs: [
{
to_: 'tz2KmhM6HHkBCRzN1mkyGfB1vTPid4PNvAbc',
token_id: 121,
amount: 1
}
]
}];
let op = contract.methods.transfer(params).toTransferParams()
let est = await tezos.estimate.transfer(op);
console.log(est);
console.log({
burnFeeMutez: est.burnFeeMutez,
gasLimit: est.gasLimit,
minimalFeeMutez: est.minimalFeeMutez,
storageLimit: est.storageLimit,
suggestedFeeMutez: est.suggestedFeeMutez,
totalCost: est.totalCost,
usingBaseFeeMutez: est.usingBaseFeeMutez});
op = set_better_limits(op, est);
console.log(JSON.stringify(op));
let rec = await tezos.wallet.transfer(op).send();
console.log(rec.opHash);
let rec2 = await rec.confirmation(2);
console.log(JSON.stringify(rec2));
} catch (err) {
console.log(err);
}
}
let config = require('./config.json');
console.log("Starting with configuration:\n", config);
init(config);