TeleBlock is a decentralized messaging and digital transaction protocol based on blockchain, designed to provide security, privacy, and censorship resistance. This system enables users to send encrypted messages, perform digital coin transfers, and participate as validators to secure the network.
- Encrypted Messaging: Messages are protected through end-to-end encryption.
- Proof-of-Stake (PoS): Efficient validation system based on coin staking.
- Dynamic Rewards: Incentives for both validators and users.
- Open API: Easy integration for developers.
- Censorship Resistance: Decentralized network with distributed nodes.
The repository contains the following main components:
Files for users who wish to operate as validators:
block_validadores.js: Manages blocks and logic for validating new blocks in the blockchain.blockchain_validadores.js: Implements the blockchain, including validation and block storage.index_validadores.js: Entry point for setting up and running the validator node.user_validadores.js: Handles validator data, including staking and rewards.
Files for users interacting with the blockchain:
decrypt-message-user.js: Logic for decrypting received messages.encrypt-deposit-stake-user.js: Functionality for staking coins.encrypt-make-group-user.js: Creation of encrypted messaging groups.encrypt-message-user.js: Encrypts messages for sending through the blockchain.encrypt-transfer-coins-user.js: Facilitates coin transfers between users.
README.md: General project documentation.
Validator rewards are dynamically calculated based on the number of validated blocks and recent network activity. This approach incentivizes active participation while controlling inflation.
Related File: block_validadores.js
Users receive native coin rewards for sending messages. Rewards progressively decrease based on recent user activity to ensure economic sustainability.
Related File: encrypt-message-user.js
- Encrypted Messages: Using asymmetric cryptography, messages are encrypted with the recipient's public key and can only be decrypted with their private key.
- Digital Signatures: Transactions are signed by users to ensure authenticity.
TeleBlock uses the Proof-of-Stake model to select validators based on the number of staked coins. This eliminates the high energy consumption associated with Proof-of-Work.
- Clone the repository: bash git clone https://github.com/Teleblock-Protocol/teleblock.git
cd teleblock npm install
- Copy all the content from # TeleBlock Protocol to mailto:support@mail.teleblock.net.
- Paste the content into a file named README.md in your GitHub repository, or any .md file you prefer.
- Save the changes, and GitHub will automatically render this file with the correct format when you access the repository.
With this, you will have the complete documentation, including installation, usage, contributions, license, and contact in your README.md file.
For questions, issues, or suggestions, you can open an issue on the repository or contact us at support@mail.teleblock.net.
Esta documentación detalla los endpoints disponibles en la API de TeleBlock para desarrolladores.
Registra un nuevo usuario en el sistema.
{
"name": "User"
}{
"success": true,
"user": {
"walletAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"publicKey": "04xxxxxxxxxxxxxxxxxxxxxxxxxxxeeee2c3exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1",
"privateKey": "2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"balance": "0.00000000",
"mnemonic": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}Envía un mensaje cifrado a otro usuario.
{
"senderAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"receiverAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"encryptedMessage": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"encrypteIv": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"encryptedKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"encryptedKeyForSender": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"signatureMessage": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}{
"success": true,
"message": "Message sent successfully and reward received: Message sent and added to the blockchain. Sender reward: 0.0001101, Validator reward: 0.0042525",
"hash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}Envía un mensaje cifrado a un grupo.
{
"senderAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"groupAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"encryptedMessage": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"encryptedKeys": {
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"encrypteIv": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"signatureMessage": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}Transfiere monedas entre usuarios.
{
"senderAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"receiverAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"amount": 0.04000000,
"signature": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}{
"success": true,
"message": "Transaction completed and block added to the blockchain",
"block": {
"index": 1236,
"timestamp": 1733971344475,
"data": {
"type": "transfer",
"sender": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"recipient": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"amount": "0.04000000",
"signature": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"validator": {
"address": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"stake": 295.6675,
"host": "xxxxxxxxxxxxxxxxxxxx"
},
"validatorReward": 0.055
},
"previousHash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"hash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}Quema una cantidad específica de monedas.
{
"senderAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"amount": 0.00100000,
"signature": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}{
"success": true,
"message": "Burning completed and block added to the blockchain.",
"block": {
"index": 1234,
"timestamp": 1733970596296,
"data": {
"type": "burn",
"sender": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"recipient": "0x000000000000000000000000000000000000dead",
"amount": "0.00100000",
"signature": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"validator": {
"address": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"stake": 295.5575,
"host": "xxxxxxxxxxxxxxxxxxxx"
},
"validatorReward": 0.055
},
"previousHash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"hash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}Envía un post cifrado a la blockchain.
{
"senderAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"encryptedPost": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"encryptedKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"encrypteIv": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"signatureMessage": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}Obtiene la información de un usuario por su dirección de wallet.
{
"success": true,
"user": {
"walletAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"name": "xxxxxxxx",
"publicKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"balance": "1.35166139"
}
}Obtiene los mensajes entre dos direcciones.
Obtiene la lista de validadores.
{
"success": true,
"validators": [
{
"address": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"ip": "xxxxxxxxxxxxxxxxxxxx",
"stake": "859.07500000"
},
{
"address": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"ip": "xxxxxxxxxxxxxxxxxxxx",
"stake": "347.30250000"
}
]
}Obtiene los últimos bloques.
{
"success": true,
"blocks": [
{
"index": 2648,
"timestamp": 1736028677919,
"data": {
"type": "burn",
"sender": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"recipient": "0x000000000000000000000000000000000000dead",
"amount": "0.00010000",
"signature": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"validator": {
"address": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"stake": 357.4275,
"host": "xxxxxxxxxxxxxxxxxxxx"
},
"validatorReward": 0.045
},
"previousHash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"hash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
]
}Obtiene la información de un validador por su dirección de wallet.
{
"success": true,
"validator": {
"walletAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"stake": "359.16054000"
}
}Crea un nuevo grupo.
{
"groupAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"groupName": "Blockchain TeleBlock",
"adminAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"encrypteIv": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"encryptedKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"signatureMessage": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}Añade un miembro a un grupo existente.
{
"adminAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"groupAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"memberAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"signatureMessage": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}Retira el stake de un validador.
{
"stakeWallet": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"stakeAmount": 859,
"walletAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"signature": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}{
"success": true,
"message": "Stake retirado exitosamente. Nuevo balance: 959.46",
"block": {
"index": 2408,
"timestamp": 1735451111172,
"data": {
"type": "unstake",
"walletAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"stakeAmount": "859.00000000",
"stakeWallet": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"validator": {
"address": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"stake": 347.3025,
"host": "xxxxxxxxxxxxxxxxxxxx"
},
"validatorReward": 0.045,
"newStake": "0.07500000"
},
"previousHash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"hash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}Añade un stake al sistema.
{
"walletAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"stakeAmount": 1,
"stakeWallet": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"signature": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}Añade un administrador a un grupo existente.
{
"adminAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"groupAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"newAdminAddress": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"signatureMessage": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}(async () => {
try {
const privateKeyHex = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
const senderAddress = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
const receiverAddress = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
const amount = 2.00000000;
const result = await signTransaction(privateKeyHex, senderAddress, receiverAddress, amount);
console.log(`Sender Address: ${result.senderAddress}`);
console.log(`Receiver Address: ${result.receiverAddress}`);
console.log(`Amount: ${result.amount}`);
console.log(`Signature: ${result.signature}`);
} catch (error) {
console.error('Error:', error.message);
}
})();