Squeak.ru - шаблоны программирования

Смарт-контракт не звонит через веб-сайт

У меня есть веб-сайт, который вводит данные в объект, а затем помещает его в блокчейн Ethereum. Однако даже после того, как я создал контракт, он не звонит? Кто-нибудь знает почему? Я использую web3, infura, metamask и remix. всякий раз, когда я вызываю remixContract.methods.setMessage (), функция появляется в моей консоли, но я не получаю запрос подтверждения от метамаски

// Connect a the web3 provider
if (typeof web3 !== 'undefined') {
    web3 = new Web3(web3.currentProvider);
} else {
    web3 = new Web3(new Web3.providers.HttpProvider("INFURA-LINK"));
}

// Set a default account
web3.eth.defaultAccount = 'MY-ACOUNT';

// Get the contract address
var RemixContract = new web3.eth.Contract([
    {
        "constant": false,
        "inputs": [
            {
                "name": "x",
                "type": "string"
            }
        ],
        "name": "setMessage",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [],
        "name": "getMessage",
        "outputs": [
            {
                "name": "",
                "type": "string"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    }
]);

// Get the contract abi
RemixContract.options.address = 'CONTRACT-ADDRESS';

console.log(RemixContract);


//data object

class Data{
    constructor(name, school, subject, teacher){
        this.name = name
        this.school = school
        this.subject = subject
        this.teacher = teacher
    }
}

$("#submit").click(function() {
    let hashable = new Data($('#name').val(), $('#email').val(), $('#age').val(), $('#tel').val())
    let certificateData = JSON.stringify(hashable)
    RemixContract.methods.setMessage(certificateData)
    console.log(certificateData);
});
            #header{
                background-color: darkblue;
                width: 100%;
                height: 100px;
                vertical-align: middle;
                color: white;
            }
            body{
                margin: 0px;
                font-family: Arial, Helvetica, sans-serif;
            }
            #navbar{
                margin: 0px;
                list-style: none;
            }
            .navbut{
                background-color: white;
                color: darkblue;;
                float: right;
                padding: 10px;
                margin: 30px;
                border-radius: 10px;
                text-decoration: none;
            }
            #homebutton{
                width: 50px;
                height: 50px;
                float: left;
                margin: 20px;
            }
            h1{
              margin: 20px;
              margin-top: 30px;
              float: left;
            }
            #box{
                border: 1px solid black;
                width: 80%;
                margin-left: 10%;
                margin-top: 5%;
                background-color: darkblue;
                color: white;
                border-radius: 10px;
            }
            #submit{
                padding: 10px;
                margin-top: 50px;
            }
            span{
                color: red;
            }
            #margin{
                margin: 10px;
            }
<!DOCTYPE html>
<html>
    <head>
        <title>Certificates Online</title>
        <meta charset="UTF-8">
        <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script>
    </head>
    <body>
        <div id='box'>
            <div id="margin">
                <label for="name">Full Name: </label>
                <input type="text" name="name" id="name" required></input>
                <br><br>
                <label for="email">Email: </label>
                <input type="text" name="email" id="email" required></input>
                <br><br>
                <label for="age">Age: </label>
                <input type="text" name="age" id="age" required></input>
                <br><br>
                <label for="tel">Telephone: </label>
                <input type="text" name="tel" id="tel" required></input>
                <br><br>
                <button id="submit">Submit</button>
            </div>
        </div>
    </body>
    <script src="dataHandling.js"></script>
</html>


Ответы:


1

Обратите внимание, что доступен новый API:

// Legacy dapp browsers...
if (window.web3 !== undefined) {
    const provider = new Web3.providers.HttpProvider(window.web3.currentProvider);
    const web3 = new Web3(provider);
}

// Modern dapp browsers...
if (window.ethereum !== undefined) {
  const provider = new Web3.providers.HttpProvider(window.ethereum);
  const web3 = new Web3(provider);
}

Подробнее:

08.09.2020
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...