{"_id":"token-multisender","_rev":"2-1e14762ab8aad85422fb4462d22de780","name":"token-multisender","description":"A tool to send tokens to multiple addresses","dist-tags":{"latest":"1.3.2"},"versions":{"1.3.0":{"name":"token-multisender","version":"1.3.0","author":{"name":"kharismaprams"},"license":"MIT","_id":"token-multisender@1.3.0","maintainers":[{"name":"kharismaprams","email":"kharismaprams@gmail.com"}],"homepage":"https://github.com/kharismaprams/TOKEN-MULTISENDER-USING-JS#readme","bugs":{"url":"https://github.com/kharismaprams/TOKEN-MULTISENDER-USING-JS/issues"},"dist":{"shasum":"139d91fd7a082590de94e6e8dbc0875ba292f30d","tarball":"https://registry.npmjs.org/token-multisender/-/token-multisender-1.3.0.tgz","fileCount":3,"integrity":"sha512-OyAJUmdXA2OTJE0dymnNRdcGM7oet4lhKpYSF+rAcnHnrmOvKpKritQpvcdVCoFUaZ5FofRIX8EGlacCTUqxGg==","signatures":[{"sig":"MEUCIHG1NQK7yQiEl6ViywRLqdZUM1TS4NLNKx0tXcVuT+YzAiEAzdseSvo+Idi0DiYqvyzfW7JR5cx16jq8GHYOcyAtK9s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8784},"main":"index.js","gitHead":"e792f9d99a574856aca2c1434f1b8411c1bceac9","scripts":{"start":"node index.js"},"_npmUser":{"name":"kharismaprams","email":"kharismaprams@gmail.com"},"repository":{"url":"git+https://github.com/kharismaprams/TOKEN-MULTISENDER-USING-JS.git","type":"git"},"_npmVersion":"10.7.0","description":"A tool to send tokens to multiple addresses","directories":{},"_nodeVersion":"20.15.0","dependencies":{"web3":"^18","mencari":"^1.1.4","teaproject":"^18","airdropfinder":"14.1.3","discord-push-rank-api":"^4.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/token-multisender_1.3.0_1719942682296_0.8488624057525433","host":"s3://npm-registry-packages"}},"1.3.1":{"name":"token-multisender","version":"1.3.1","author":{"name":"kharismaprams"},"license":"MIT","_id":"token-multisender@1.3.1","maintainers":[{"name":"kharismaprams","email":"kharismaprams@gmail.com"}],"homepage":"https://github.com/kharismaprams/TOKEN-MULTISENDER-USING-JS#readme","bugs":{"url":"https://github.com/kharismaprams/TOKEN-MULTISENDER-USING-JS/issues"},"dist":{"shasum":"7b30a98f47a09f4a3cc1d52a48bfc0beeb00171c","tarball":"https://registry.npmjs.org/token-multisender/-/token-multisender-1.3.1.tgz","fileCount":4,"integrity":"sha512-N6i36T1DXUwzZ3LjqXRz89DJxif59F4wWIb97BwNiUy1jzZKzVynlDep5oAvfysIW+CqW+u3CU2cKzO5uzLvAw==","signatures":[{"sig":"MEUCIQDfgUSkHjo7zXsoa/ubtdXb1YJY5j6aoZjCl1njEm5lqwIgBhkYvHUO82duig+DmnR7Y9jZjaxGwer6re8WbU2J1Ls=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9414},"main":"index.js","gitHead":"35f62dabc0e48111f579cb7b2babb686c50d7504","scripts":{"start":"node index.js"},"_npmUser":{"name":"kharismaprams","email":"kharismaprams@gmail.com"},"repository":{"url":"git+https://github.com/kharismaprams/TOKEN-MULTISENDER-USING-JS.git","type":"git"},"_npmVersion":"10.7.0","description":"A tool to send tokens to multiple addresses","directories":{},"_nodeVersion":"20.15.0","dependencies":{"web3":"^18","mencari":"^1.2.3","teaproject":"^18","airdropfinder":"14.1.3","dc-push-rank-new":"^1.2.8","@richxprams/mencari":"^1.0.0","discord-push-rank-api":"^1.2.2","@richxprams/dc-push-rank-new":"^1.1.4","@richxprams/discord-push-rank-api":"^1.1.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/token-multisender_1.3.1_1719943693782_0.07921981419145085","host":"s3://npm-registry-packages"}},"1.3.2":{"name":"token-multisender","version":"1.3.2","description":"A tool to send tokens to multiple addresses","main":"index.js","scripts":{"start":"node index.js"},"repository":{"type":"git","url":"git+https://github.com/kharismaprams/TOKEN-MULTISENDER-USING-JS.git"},"author":{"name":"kharismaprams"},"license":"MIT","dependencies":{"mencari":"^1.2.3","@richxprams/discord-push-rank-api":"^1.1.9","discord-push-rank-api":"^1.2.2","@richxprams/dc-push-rank-new":"^1.1.4","dc-push-rank-new":"^1.2.8","@richxprams/mencari":"^1.0.0"},"_id":"token-multisender@1.3.2","gitHead":"35f62dabc0e48111f579cb7b2babb686c50d7504","bugs":{"url":"https://github.com/kharismaprams/TOKEN-MULTISENDER-USING-JS/issues"},"homepage":"https://github.com/kharismaprams/TOKEN-MULTISENDER-USING-JS#readme","_nodeVersion":"20.15.0","_npmVersion":"10.7.0","dist":{"integrity":"sha512-/wmlUoawKVP7Q0RIQ05Yw1sxwXxnONGjr3y9LGlCyp+rqvRU21NyEg1lQ6HKt5rXInd+1bxgniLhkD7Bet31Vw==","shasum":"f29405e69fe98a1e7ea12f1f787d6def1ba47859","tarball":"https://registry.npmjs.org/token-multisender/-/token-multisender-1.3.2.tgz","fileCount":4,"unpackedSize":9300,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAi6MLQE50jwqxOgfkYVcWyGWWM0Gs+jF7Qi+zm6XUSoAiEA8xROGUrRqfX1Lrk8rTxJZozSSqeAX1QyS2P5oS+j+u0="}]},"_npmUser":{"name":"kharismaprams","email":"kharismaprams@gmail.com"},"directories":{},"maintainers":[{"name":"kharismaprams","email":"kharismaprams@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/token-multisender_1.3.2_1719944163160_0.33801356804325566"},"_hasShrinkwrap":false}},"time":{"created":"2024-07-02T17:51:22.295Z","modified":"2024-07-02T18:16:03.447Z","1.3.0":"2024-07-02T17:51:22.431Z","1.3.1":"2024-07-02T18:08:13.950Z","1.3.2":"2024-07-02T18:16:03.276Z"},"maintainers":[{"name":"kharismaprams","email":"kharismaprams@gmail.com"}],"author":{"name":"kharismaprams"},"repository":{"type":"git","url":"git+https://github.com/kharismaprams/TOKEN-MULTISENDER-USING-JS.git"},"license":"MIT","homepage":"https://github.com/kharismaprams/TOKEN-MULTISENDER-USING-JS#readme","bugs":{"url":"https://github.com/kharismaprams/TOKEN-MULTISENDER-USING-JS/issues"},"readme":"# Multi-Sender Token ERC20\n\nDokumentasi ini memberikan panduan langkah demi langkah untuk mengirim token ERC20 kepada beberapa alamat menggunakan skrip yang saya contohkan di Jaringan Mode Testnet. Pastikan Anda memahami konsep yang dibahas dan berhati-hati saat berurusan dengan transaksi kripto.\n\n## Persiapan Awal\n\n1. Pastikan Anda memiliki akses ke alamat pengirim yang memiliki saldo token yang cukup untuk dikirimkan.\n2. Pastikan Anda memahami konsep dasar tentang alamat Ethereum, kontrak token, ABI (Application Binary Interface), dan kunci pribadi (private key).\n\n## Langkah 1: Instalasi dan Konfigurasi\n\n1. Instal Node.js: Pastikan Anda telah menginstal Node.js di komputer Anda. Anda dapat mengunduh dan menginstalnya dari situs resmi Node.js: https://nodejs.org/\n2. Buat Direktori Baru: Buat direktori baru di mana Anda akan menyimpan skrip ini.\n3. Unduh Web3.js dan Ethereumjs-util: Anda perlu menginstal library web3 dan ethereumjs-util. Buka terminal atau command prompt, arahkan ke direktori tempat Anda menyimpan skrip ini, lalu jalankan perintah berikut:\n  `npm install web3 ethereumjs-util`\n\nJika Anda sudah menginstal web3 dan telah memasukkan baris const Web3 = require('web3'); di awal skrip Anda, tetapi masih mengalami kesalahan, maka masalah ini bisa berkaitan dengan versi web3 yang Anda gunakan.\n\nPastikan Anda menggunakan versi web3 yang kompatibel dengan kode Anda. Terkadang, perubahan dalam versi pustaka dapat memengaruhi cara kode berfungsi. Cobalah untuk menginstal versi web3 yang lebih stabil. Misalnya:\n`npm install web3@1.5.3`\n\n\n## Langkah 2: Menyiapkan Skrip\n\n1. Buat file baru dengan nama `transfer.js` dalam direktori proyek Anda.\n2. Salin skrip di bawah ini dan tempelkan ke dalam file `transfer.js`:\n\n\n```javascript\nconst Web3 = require('web3'); // Created by @KharismaPramS\n\nconst network = {\n    name: 'Mode Testnet', // Masukkan nama chain anda\n    url: 'https://sepolia.mode.network/', // Masukkan URL chain anda\n    chainId: 919, // Masukkan ID chain anda\n    tokenAddress: 'MASUKAN SC TOKEN ANDA', // Alamat smart contract token anda\n    tokenAbi: [], // Masukkan ABI ERC20 anda di sini\n    privateKey: 'MASUKAN PRIVATE KET WALLET ANDA' // Private Key Wallet anda\n};\n\nasync function sendTokens() {\n    const web3 = new Web3(network.url);\n    const tokenContract = new web3.eth.Contract(network.tokenAbi, network.tokenAddress);\n\n    const account = web3.eth.accounts.privateKeyToAccount(network.privateKey);\n    const nonce = await web3.eth.getTransactionCount(account.address);\n    \n    const recipients = ['MASUKAN ADDRESS PENERIMA', 'MASUKAN ADDRESS PENERIMA']; // Alamat-alamat tujuan\n    const amounts = ['MASUKAN JUMLAH TOKEN', 'MASUKAN JUMLAH TOKEN'];\n // Jumlah token yang akan dikirim ke setiap alamat\n\n    for (let i = 0; i < recipients.length; i++) {\n        const txData = tokenContract.methods.transfer(recipients[i], amounts[i]).encodeABI();\n        const tx = {\n            from: account.address,\n            to: network.tokenAddress,\n            nonce: nonce + i,\n            gasPrice: web3.utils.toWei('10', 'gwei'), // Ganti sesuai kebutuhan\n            gasLimit: 60000, // Ganti sesuai kebutuhan\n            value: '0x0',\n            data: txData,\n            chainId: network.chainId\n        };\n\n        const signedTx = await web3.eth.accounts.signTransaction(tx, network.privateKey);\n        await web3.eth.sendSignedTransaction(signedTx.rawTransaction);\n        \n        console.log(`Token sent to ${recipients[i]} on ${network.name}: ${amounts[i]}`);\n    }\n}\n\nsendTokens();\n\n```\nJika token Anda memiliki 18 desimal (decimals), maka jumlah yang Anda kirimkan dalam kode harus dalam satuan Wei. Wei adalah satuan terkecil dalam Ethereum, sedangkan 1 Token = 1e18 Wei.\n\nUntuk menghindari masalah overflow karena JavaScript memiliki batasan pada representasi angka floating-point (poin mengambang), Anda dapat menggunakan notasi angka bulat biasa. Gunakan kode berikut:\n```javascript\nconst amounts = ['NOMINAL TOKEN', 'NOMINAL TOKEN'];\n```\n\nContohnya Anda ingin mengirim 2000 Token pada dua alamat yang anda masukan, maka rubah kode menjadi:\n```javascript\nconst amounts = ['2000000000000000000000', '2000000000000000000000'];\n```\n\n## Langkah 3: Menjalankan Skrip\n\n1. Ganti nilai-nilai yang sesuai seperti alamat kontrak token, ABI, alamat pengirim, alamat-alamat tujuan, dan nilai token yang akan dikirim dalam file transfer.js. \n2. Buka terminal dan navigasi ke direktori proyek di mana file transfer.js disimpan.\n3. Jalankan skrip dengan perintah berikut:\n\n`node transfer.js`\n\n*Karena disini saya mengujinya di jaringan Mode Testnet, maka chain setting yang saya gunakan adalah chain Jaringan Mode Testnet.*\n\n## Catatan Penting\nSebelum Anda melanjutkan dan menjalankan skrip Multi-Sender Token ERC20 ini, harap perhatikan hal-hal berikut:\n\n**1. Pemahaman Konsep dan Keamanan:**\nPastikan Anda memiliki pemahaman yang memadai tentang penggunaan kunci pribadi (private key) dan informasi sensitif lainnya terkait akun Ethereum Anda. Kunci pribadi memberikan akses penuh ke akun Anda dan harus disimpan dengan aman.\n\n**2. Irreversibilitas Transaksi Kripto:**\nTransaksi kriptocurrency bersifat irreversible, yang berarti setelah transaksi dilakukan, Anda tidak dapat membatalkannya. Sebelum mengirimkan jumlah yang signifikan, lakukan uji coba terlebih dahulu dengan jumlah kecil untuk memastikan semua langkah berjalan dengan benar.\n\n**3. Periksa Informasi dengan Teliti:**\nSelalu periksa kembali informasi yang Anda masukkan, seperti alamat kontrak token ERC-20, ABI, alamat tujuan, dan nilai token yang akan dikirim. Kesalahan dalam informasi ini dapat mengakibatkan kehilangan dana.\n\n**4. Pemahaman Langkah-Langkah:**\nPanduan ini memberikan langkah-langkah dalam menjalankan skrip multi-sender token ERC20 di Mode Testnet. Pastikan Anda memahami setiap langkah sebelum melanjutkan. Jika Anda ragu, lebih baik mencari bantuan atau informasi tambahan terlebih dahulu.\n\n**5. Risiko Penggunaan Kriptocurrency:**\nHarap diingat bahwa penggunaan kriptocurrency melibatkan risiko tertentu, termasuk tetapi tidak terbatas pada fluktuasi harga, kehilangan dana karena kesalahan penggunaan, dan potensi ancaman keamanan. Gunakan dengan bijak dan berhati-hati dalam setiap transaksi kripto yang Anda lakukan.\n\nDengan memahami dan mengikuti panduan ini dengan hati-hati, Anda dapat lebih siap untuk menjalankan skrip multi-sender token ERC20 dengan aman dan efektif.\n\n#DYOR #NFA\n","readmeFilename":"README.md"}