1. Anasayfa
  2. Yazılım

Birkaç Kod Satırından Kripto Kitle Fonlaması Aracı Oluşturun

Birkaç Kod Satırından Kripto Kitle Fonlaması Aracı Oluşturun
Birkaç Kod Satırından Kripto Kitle Fonlaması Aracı Oluşturun
0

Kripto Kitle Fonlama. Kendi kitle fonlaması kampanyanızı başlatmak ister misiniz? Veya bir Github sorununu çözmek için biraz para toplamak mı? Yoksa makaleniz için bağış kabul eder misiniz? Kripto ile çok kolay. Bu makalede, herhangi bir Ethereum uyumlu ağda ERC-20 jetonlarını veya kriptoyu kabul etmek için bir kripto kitle fonlaması widget’ı oluşturacağız.

Kitle Fonlama Aracı Oluşturmak

Teori

Widget’ımız, Ethereum adresimizden ve bakiyemizden oluşturulan dinamik olarak oluşturulmuş bir PNG olacaktır. Bu resmi, resimleri URL’ye göre gömebileceğiniz herhangi bir yere gömebilirsiniz. Bunu GitHub benioku dosyasına veya bir sorunun açıklamasına ekleyebilir veya makalenize vb. gömebilirsiniz. Görüntü, Ethereum adresinize bir QR kodu ve bakiyenizi ve ne kadar uzakta olduğunu gösteren bir gösterge içerecektir. o hedeften. Yeni bir kampanya başlattığınızda, fonları kabul etmek için yeni bir Ethereum hesabı veya akıllı bir sözleşme (ör.: bir ICO sözleşmesi) oluşturmanız gerekir.

Kullanıcı basitçe QR kodunu tarayabilir ve bir miktar kripto gönderebilir. Yaklaşık 10 saniye sürer. Bir kitle fonlaması kampanyasına kripto göndermek hiç bu kadar kolay olmamıştı.

Kripto Kitle Fonlama Kod

Uygulama için JavaScript’i ve ortaya çıkan PNG görüntüsünü oluşturmak için düğüm tuvalini kullanacağız.

Her şeyden önce, gri bir tuval oluşturacağız.

const canvas = createCanvas(200, 270)
const ctx = canvas.getContext('2d')
ctx.fillStyle = "#aaaaaa"
ctx.fillRect(0, 0, canvas.width, canvas.height)

Ardından QR kodunu üzerine boyayın. Bunun için qrcode kütüphanesini kullanacağız.

let qrcode = new Image()
qrcode.src = await QRCode.toDataURL(config.ETH_ADDRESS)
ctx.drawImage(qrcode, 10, 10, 180, 180)

Bir sonraki adım, bakiyeyi sorgulamaktır. Web3 kütüphanesini kullanarak kolayca yapabiliriz.

const web3 = new Web3(config.PROVIDER_URL)
const balance = parseInt(await web3.eth.getBalance(config.ETH_ADDRESS))

Web3 sınıfının yapıcısının bir sağlayıcı parametresi vardır. Bu, Ethereum JSON-RPC uç noktasının URL’sidir. Ethereum Mainnet’i veya test ağlarından birini kullanacaksanız, en iyi yol ConsenSys’s Infura’yı kullanmaktır. MetaMask da bunu kullanır. Polygon veya xDAI gibi alternatif bir Ethereum uyumlu ağda ödeme kabul etmek istiyorsanız, RPC uç noktalarını burada bulabilirsiniz.

Jeton ödemelerini kabul etmek istiyorsanız, ERC20 bakiyenizi sorgulamanız da mümkündür.

const contract = new web3.eth.Contract(erc20_abi as AbiItem[], CONTRACT_ADDRESS)
const balance = await contract.methods.balanceOf(config.ETH_ADDRESS).call()

Contract sınıfının yapıcısı, arayüz tanımı (ABI) ve ERC20 belirteç sözleşmesinin adresi olmak üzere 2 parametreye sahiptir.

Bakiye biliniyorsa, yüzdeyi hesaplamak çok kolaydır.

let percent = balance / (config.TARGET_VALUE * 10 ** 18);
if (percent > 1)
    percent = 1;

Bakiyenin wei cinsinden olması önemlidir, bu yüzden onu 10^18’e bölmeniz gerekir.

Tam kod şöyle görünür

const web3 = new Web3(config.PROVIDER_URL)
const balance = parseInt(await web3.eth.getBalance(config.ETH_ADDRESS))

const canvas = createCanvas(200, 270)
const ctx = canvas.getContext('2d')
ctx.fillStyle = "#aaaaaa"
ctx.fillRect(0, 0, canvas.width, canvas.height)

let qrcode = new Image()
qrcode.src = await QRCode.toDataURL(config.ETH_ADDRESS)
ctx.drawImage(qrcode, 10, 10, 180, 180)

ctx.fillStyle = '#000000'
ctx.font = '12px Impact'
ctx.fillText(config.TEXT, 10, 210)
ctx.fillText(`${(balance / 10 ** 18).toFixed(2).toString()} ${config.SYMBOL} / ${config.TARGET_VALUE.toFixed(2).toString()} ${config.SYMBOL}`, 10, 230)

ctx.fillStyle = '#ffffff'
ctx.fillRect(10, 240, 180, 10)

let percent = balance / (config.TARGET_VALUE * 10 ** 18);
if (percent > 1)
    percent = 1;

ctx.fillStyle = '#037362'
ctx.fillRect(10, 240, Math.round(180 * percent), 10)

ctx.strokeStyle = '#000000'
ctx.lineWidth = 1
ctx.strokeRect(10, 240, 180, 10)

23 satır kod. Yazdığımız gibi, önemli bir şey değil. Kodun tamamı GitHub‘da mevcuttur. (Ayrıca bir PHP uygulaması var.)

Kod, minimum bir Lightsail bulut sunucusunda (3,5$/ay) çalışabilir, ancak buna tam bir EC2 bulut sunucusu tahsis etmek istemiyorsanız, onu AWS lambda’ya dağıtabilirsiniz. Her şey GitHub deposuna dahildir.

Hasan YILDIZ, Girişimci. Doktora Öğrencisi. Yazmayan YAZILIMCI. Veri Şeysi. Eğitmen...

Yazarın Profili

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir