Building a Chatbot based on Blockchain

Calender

31st July 2023

Clock

16 min read

Author
Yogesh Sahu

Associate Consultant - Development

What is a Blockchain-based Chatbot

 

A blockchain-based chatbot is a chatbot that leverages blockchain technology as a core component to enhance its functionality, security, and transparency. This type of chatbot incorporates the decentralized and immutable nature of blockchain and is developed using blockchain development services.

 

Here are some key characteristics and advantages of a blockchain-based chatbot:

 

Decentralization

 

A blockchain-based chatbot operates on a decentralized network of nodes, removing the need for a central authority. This decentralization ensures that no single entity has control over the chatbot's operations, making it resistant to censorship and single points of failure.

 

Immutable and Transparent Chat History:

 

The chat history in a blockchain-based chatbot is stored on the blockchain, which ensures its immutability. Once a message is added to the blockchain, it cannot be modified or deleted. This transparency builds trust and allows users to verify the authenticity of the chatbot's responses.

 

Also, Explore | Exploring the Synergy of Blockchain and Chatbot Technology

 

Now Open the Remix and paste the following code:

 

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

contract Chatbot {

struct Message {

address sender;

string content;

}

 

Message[] public chatHistory;

 

event MessageSent(address sender, string content);

 

function sendMessage(string memory message) public {

Message memory newMessage = Message(msg.sender, message);

chatHistory.push(newMessage);

emit MessageSent(msg.sender, message);

}

 

function getChatHistoryLength() public view returns (uint) {

return chatHistory.length;

}

 

function getMessage(uint index) public view returns (address, string memory) {

require(index < chatHistory.length, "Invalid message index");

Message memory message = chatHistory[index];

return (message.sender, message.content);

}

}

 

 Now, deploy the contract on the Sepolia network.

 

Open the VS code and setup the node js project 

  

npm init --y 
npm i ethers

 

Copy the following code:

 

const { ethers } = require("ethers");

const contractABI = require("./Chatbot.json"); // Contract ABI

const contractAddress = "0x002D7EF6B4Bd982eD4D05D56744401fbeC7703f4";

 

const provider = new ethers.JsonRpcProvider(

"https://sepolia.infura.io/v3/API_KEY"

);

const contract = new ethers.Contract(contractAddress, contractABI, provider);

 

async function contractEvents() {

contract.on("MessageSent", async (param1, param2, pair, amount, event) => {

const chatBotPrivateKey =

"";

const chatBotWallet = await connectWallet(chatBotPrivateKey);

await sendResponse(param1, param2, chatBotWallet);

});

}

 

async function connectWallet(walletPrivateKey) {

try {

const wallet = new ethers.Wallet(walletPrivateKey, provider);

const connectedWallet = wallet.connect(provider);

 

console.log("Wallet connected:", connectedWallet.address);

return connectedWallet;

} catch (error) {

console.error("Failed to connect with wallet:", error);

return null;

}

}

 

async function sendMessage(message, wallet) {

try {

const contractWithSigner = contract.connect(wallet);

const transaction = await contractWithSigner.sendMessage(message);

await transaction.wait();

 

console.log("Message sent to the blockchain:", transaction.hash);

} catch (error) {

console.error("Failed to send the message:", error);

}

}

 

async function sendResponse(param1, param2, chatBotWallet) {

if (param1 !== "0x06C2479D95AEe2C66e3369440A92EC0AA2885Ea0") {

if (param2.includes("Hello") || param2.includes("Hii")) {

try {

const contractWithSigner = contract.connect(chatBotWallet);

const transaction = await contractWithSigner.sendMessage(

"Hello! How can I assist you today?"

);

await transaction.wait();

 

console.log("Message sent to the blockchain:", transaction.hash);

} catch (error) {

console.error("Failed to send the message:", error);

}

} else {

try {

const contractWithSigner = contract.connect(chatBotWallet);

const transaction = await contractWithSigner.sendMessage(

"I'm sorry, but I'm having trouble understanding your message. It seems to be a random string of characters. If you have any specific questions or need assistance with something, please let me know, and I'll be happy to help!"

);

await transaction.wait();

 

console.log("Message sent to the blockchain:", transaction.hash);

} catch (error) {

console.error("Failed to send the message:", error);

}

}

}

}

 

async function main() {

const walletPrivateKey =

""; // Replace with your private key

const wallet = await connectWallet(walletPrivateKey);

 

if (wallet) {

await contractEvents();

await sendMessage("Hello, blockchain!", wallet);

}

}

 

main();

 

 Run node index.js

 

Wallet connected: 0xD5de11DDaaE10Ee4607a22b3AAC2259450aeE859
Wallet connected: 0x06C2479D95AEe2C66e3369440A92EC0AA2885Ea0
Message sent to the blockchain: 0x86b5934eca8de572c04c2fd52563c87c671360b6ef6fbedf96906914b61ecf31
Message sent to the blockchain: 0x05c8e5a834854f117221bf67a163ca5a1a3dfe10d155a253391ed89c8d7571e1

 

If you are interested in developing a similar project, you may connect with our skilled blockchain developers to get started. 

Author Yogesh Sahu

Yogesh is a highly experienced backend developer with a strong command over Node.js, MongoDB, Express, and Git/GitHub. He specializes in developing scalable and reliable web applications using JavaScript and Node.js. Additionally he has extensive knowledge of Ethereum, Solidity, and Smart Contracts, and he has worked on various blockchain projects, smart contracts, and implementing various blockchain protocols as well. With a background in backend development, he has built RESTful APIs, implemented authentication and authorization mechanisms, and developed expertise in blockchain technology.

Associate Consultant - Development

bg bg

What's Trending in Tech

bg

Our Offices

India

INDIA

DG-18-009, Tower B,
Emaar Digital Greens, Sector 61,
Gurugram, Haryana
122011.
Unit- 117-120, First Floor,
Welldone Tech Park,
Sector 48, Sohna road,
Gurugram, Haryana
122018.
USA

USA

30N, Gloud St STR E, Sheridan, Wyoming (USA) - 82801
Singapore

SINGAPORE

10 Anson Road, #13-09, International Plaza Singapore 079903.

By using this site, you allow our use of cookies. For more information on the cookies we use and how to delete or block them, please read our cookie notice.