Передача токенов пользователю с помощью облачных функций Google - PullRequest
0 голосов
/ 22 января 2019

Я передаю токен на кошелек пользователя при создании аккаунта. Для этого я использую облачные функции Google.

Здесь, в случае создания учетной записи, токены будут переведены на адрес. Моя облачная функция работает нормально, но функция передачи токена не срабатывает. Вот код -

const admin = require('firebase-admin');
const functions = require('firebase-functions');
var Web3 = require('web3');
admin.initializeApp(functions.config().firebase);      
var web3 = new Web3(new 
Web3.providers.HttpProvider("http://localhost:8545"));
var Personal = require('web3-eth-personal')
var personal = new Personal(Personal.givenProvider)
var ABI = [{'contract ABI'}]
var contract =new web3.eth.Contract(ABI, '0xF62E0..fd44fC931571ae957')

exports.newUser = (event, callback) => {
    const triggerResource = event.resource;
    web3.eth.personal.unlockAccount("0xc..9050f547", "password", 60, (unlock) => {
        contract.methods.transfer('0x4..bB7d982D8A8632e', 2).
        send({
            from: '0xC3Fe4...0F547',
            gas: 210000
        }, (error, txhash) => {
            if (!error && txhash) {
                console.log(triggerResource);
            }
        });
    })
    callback();
};

Я развернул контракт в частной сети.

1 Ответ

0 голосов
/ 22 января 2019

Метод send(), который вы вызываете, кажется асинхронным, но вы вызываете обратный вызов до его завершения.Чтобы это исправить, переместите вызов на callback() в блок кода, который выполняется после выполнения send():

exports.newUser = (event, callback) => {
    const triggerResource = event.resource;
    web3.eth.personal.unlockAccount("0xc..9050f547", "password", 60, (unlock) => {
        contract.methods.transfer('0x4..bB7d982D8A8632e', 2).
        send({
            from: '0xC3Fe4...0F547',
            gas: 210000
        }, (error, txhash) => {
            if (!error && txhash) {
                console.log(triggerResource);
            }
            callback(error);
        });
    })
};

. Вы увидите, что код теперь также передает error вобратный вызов, что означает, что он будет отображаться в журналах облачных функций.

...