Skip to content

Instantly share code, notes, and snippets.

@laalaguer
laalaguer / txBody.js
Created January 13, 2020 06:01
The snippet for building a tx body
// Using thor-devkit.js
const Transaction = require('thor-devkit/dist/transaction').Transaction
// Construct transaction body.
const txBody = {
// Test-net: 0x27, Main-net: 0x4a.
chainTag: 0x27,
// After which block this tx should happen?
// 16 characters of block ID.
blockRef: '0x004984e1064ed410',
@laalaguer
laalaguer / hello.sol
Created January 6, 2020 08:03
An example Solidity code for a small smart contract
pragma solidity ^0.5.11;
contract Hello {
uint public counter;
constructor () public {
counter = 0;
}
function increaseAmount () public {
@laalaguer
laalaguer / operations.js
Created March 5, 2019 10:29
Full operations.js
/**
* Get token amount of holder from a contract.
* @param {String} addressContract 0x started address.
* @param {String} addressHolder 0x started address.
*/
async function getTokenBalance (addressContract, addressHolder) {
const balanceOfABI = {
'constant': true,
'inputs': [
{
@laalaguer
laalaguer / App.vue
Last active March 6, 2019 03:25
Full App.vue
<template>
<div id="app">
<div>
<b-card style="max-width: 30rem;" :header="myaddress">
<p>{{myamount}} <span class="text-primary">VTHO</span></p>
<b-form-group label="To Address:" label-for="toaddress">
<b-form-input id="toaddress" v-model.trim="toaddress"></b-form-input>
</b-form-group>
@laalaguer
laalaguer / App.vue
Last active March 5, 2019 11:00
Update the template
<template>
<div id="app">
<div>
<b-card style="max-width: 30rem;" :header="myaddress">
<p>{{myamount}} <span class="text-primary">VTHO</span></p>
<b-form-group label="To Address:" label-for="toaddress">
<b-form-input id="toaddress" v-model.trim="toaddress"></b-form-input>
</b-form-group>
@laalaguer
laalaguer / App.vue
Last active March 6, 2019 03:25
More in App.vue to send transactions
<script>
methods: {
// ... add after refreshTokenBalance()
transfer () { // Confrim and send out a transfer.
const evmAmount = utils.humanToEVM(this.toamount.toString(), 18)
operations.transferToken(this.contract, this.myaddress, this.toaddress, evmAmount, this.toamount, 'VTHO')
.then(result => {alert('success!')})
.catch(e => {alert('failed!')})
}
}
@laalaguer
laalaguer / App.vue
Last active March 5, 2019 10:13
Add query balance function
<!-- Continue with the App.vue -->
<script>
const operations = require('./operations.js')
const utils = require('./utils.js')
export default {
data() {
return {
myaddress: '0xa7a609b928c4eac077d0e5640f3fa650746c4fcf',
myamount: 0,
@laalaguer
laalaguer / utils.js
Last active March 6, 2019 03:26
Help formatting numbers
const BigNumber = require('bignumber.js')
const DECIMALS = function (points) {
return new BigNumber(10 ** points) // Decimals = 18 on VTHO and most contracts.
}
/**
* Turn a string to big number.
* @param {String} aString a number string.
*/
const makeBN = function (aString) {
@laalaguer
laalaguer / operations.js
Created March 5, 2019 09:45
final touch of operations.js
export {
getTokenBalance,
transferToken
}
@laalaguer
laalaguer / operations.js
Created March 5, 2019 09:35
Add sign-and-send code to the operations.js
/**
* Transfer token from one to another.
* @param {String} addressContract Contract address.
* @param {String} signerAddress Enforce who signs the transaction.
* @param {String} toAddress Receiver of transfer.
* @param {String} amountEVM Big number in string.
* @param {Number} amountHuman Normal number in Javascript.
* @param {String} symbol Symbol of token.
*/
async function transferToken (addressContract, signerAddress, toAddress, amountEVM, amountHuman, symbol) {