通过开源撸空投
本文总结了最近一年给开源社区空投代币的项目选择的仓库地址,基本上给开源社区的空投都非常丰厚。 涉及的项目包括TIA,FUEL,SCR,AVAL四个。 空投标准说明:FUEL,TIA,SCR,AVAIL 汇总分析:四个项目中,go-ethereum 出现了四次,如果能够在该项目中贡献多次,收益会非常可观。FUEL、TIA、AVAIL涉及模块化概念,cosmos-sdk、ibc-go、ibc、celestia-node 出现次数有3次,后续有模块化的项目很可能会继续选择这些项目。能够比较容易贡献的项目l2beat 出现次数 仓库地址 4 https://github.com/ethereum/go-ethereum 3 https://github.com/paradigmxyz/reth 3 https://github.com/chainsafe/lodestar 以太坊共识相关 3 https://github.com/sigp/lighthouse 以太坊共识相关 3 https://github.com/cosmos/ibc-go 3 https://github.com/...
智能合约对比:EVM和CosmWasm
介绍EVM特点 1、幂等性,相同的输入必然会有相同的输出。 2、隔离性,智能合约在完全隔离的环境中执行。 3、可终止,EVM是图灵完备的,只要给出足够的时间和资源总是会有对应的结果。 EVM的局限:速度慢,只能在以太坊上运行。 CosmWasm特点 新型的智能合约,包括EVM所有的功能并且增加了某些功能,同时支持使用多种开发语言。备注:暂时不准备研究智能合约技术相关的内容,所以对于CosmWasm智能合约的了解到此即可。 也就是具备下面共识: 1、CosmWasm比EVM运行速度更快,开发效率更快,支持的开发语言更多。 2、使用了Cosmos SDK的应用,也就集成了CosmWasm智能合约。参考文章:现代智能合约生态的比较
Betachain核心
1、Betachain的出发点是为了解决流动性割裂的问题,与大多数链抽象的解决方案不同,Betachain提出了POL的共识机制,直接将链的安全性交给流动性。 2、Betachain的Meme文化属性特别强,并且有强烈的NFT基因,可以畅想后续会大力支持NFT相关的项目。 3、Berachain官方代币有三个,分别是充当gas fee的BEAR,治理代币BGT,稳定币HONEY。BGT 无法直接购买,可以通过在 BEX 上提供流动性,借出 HONEY 以及在 Berps 的 bHONEY Vault 中提供 HONEY 等方式获取(可能会变更)。BGT无法转移,要卖出需先转换成BEAR代币。 4、为避免重复造轮子,同时保证交易深度,官方下场做了DEFI的基本组件,包括DEX、借贷、永续、稳定币等。这是DEFI赛道最赚钱的模块,能够保证对于治理代币BGT的赋能。除此之外,Berachain的其他生态项目存在的机会:(1)差异化竞争,服务长尾资产;(2)围绕 PoL 机制、BGT 和贿选做创新; 5、Berachain 是一个构建在 Cosmos SDK 之上,采用 CometBFT...
通过开源撸空投
本文总结了最近一年给开源社区空投代币的项目选择的仓库地址,基本上给开源社区的空投都非常丰厚。 涉及的项目包括TIA,FUEL,SCR,AVAL四个。 空投标准说明:FUEL,TIA,SCR,AVAIL 汇总分析:四个项目中,go-ethereum 出现了四次,如果能够在该项目中贡献多次,收益会非常可观。FUEL、TIA、AVAIL涉及模块化概念,cosmos-sdk、ibc-go、ibc、celestia-node 出现次数有3次,后续有模块化的项目很可能会继续选择这些项目。能够比较容易贡献的项目l2beat 出现次数 仓库地址 4 https://github.com/ethereum/go-ethereum 3 https://github.com/paradigmxyz/reth 3 https://github.com/chainsafe/lodestar 以太坊共识相关 3 https://github.com/sigp/lighthouse 以太坊共识相关 3 https://github.com/cosmos/ibc-go 3 https://github.com/...
智能合约对比:EVM和CosmWasm
介绍EVM特点 1、幂等性,相同的输入必然会有相同的输出。 2、隔离性,智能合约在完全隔离的环境中执行。 3、可终止,EVM是图灵完备的,只要给出足够的时间和资源总是会有对应的结果。 EVM的局限:速度慢,只能在以太坊上运行。 CosmWasm特点 新型的智能合约,包括EVM所有的功能并且增加了某些功能,同时支持使用多种开发语言。备注:暂时不准备研究智能合约技术相关的内容,所以对于CosmWasm智能合约的了解到此即可。 也就是具备下面共识: 1、CosmWasm比EVM运行速度更快,开发效率更快,支持的开发语言更多。 2、使用了Cosmos SDK的应用,也就集成了CosmWasm智能合约。参考文章:现代智能合约生态的比较
Betachain核心
1、Betachain的出发点是为了解决流动性割裂的问题,与大多数链抽象的解决方案不同,Betachain提出了POL的共识机制,直接将链的安全性交给流动性。 2、Betachain的Meme文化属性特别强,并且有强烈的NFT基因,可以畅想后续会大力支持NFT相关的项目。 3、Berachain官方代币有三个,分别是充当gas fee的BEAR,治理代币BGT,稳定币HONEY。BGT 无法直接购买,可以通过在 BEX 上提供流动性,借出 HONEY 以及在 Berps 的 bHONEY Vault 中提供 HONEY 等方式获取(可能会变更)。BGT无法转移,要卖出需先转换成BEAR代币。 4、为避免重复造轮子,同时保证交易深度,官方下场做了DEFI的基本组件,包括DEX、借贷、永续、稳定币等。这是DEFI赛道最赚钱的模块,能够保证对于治理代币BGT的赋能。除此之外,Berachain的其他生态项目存在的机会:(1)差异化竞争,服务长尾资产;(2)围绕 PoL 机制、BGT 和贿选做创新; 5、Berachain 是一个构建在 Cosmos SDK 之上,采用 CometBFT...
Share Dialog
Share Dialog
需要说明的是:
1、官方地址
https://www.superfluid.finance/
2、该填写白名单领取POAP的活动已经结束了。
3、这个网页防爬功能做的比较好,使用了iframe结构,操作起来比较麻烦,本次选择了比较取巧的方式。
const puppeteer = require('puppeteer-extra') const RecaptchaPlugin = require('puppeteer-extra-plugin-recaptcha')
puppeteer.use( RecaptchaPlugin({ provider: { id: '2captcha', token: '' // REPLACE THIS WITH YOUR OWN 2CAPTCHA API KEY ⚡ }, visualFeedback: true // colorize reCAPTCHAs (violet = detected, green = solved) }) )
let emails = [ // "test@ludaobi.com", // "demo@ludaobi.com", ] const inviteUrl = "https://www.superfluid.finance/" async function forloop(){ for (let index = 0; index < emails.length; index++) { await Promise.race([ helper(index), awaitSync(120000) ]) } }
async function helper(index){ const browser = await puppeteer.launch({ headless: false, timeout:0, devtools: false, }) try { let url = inviteUrl const pages = await browser.pages() const page = pages[0] await page.goto(url, { waitUntil: 'networkidle2', })
await page.evaluate(() => {
var shs = document.querySelectorAll(".scroll-content .sf-hero");
for(var i=0; i< shs.length; i++){
shs\[i\].parentNode.removeChild(shs\[i\]);
}
var elements = document.querySelectorAll(".scroll-content section");
for(var i=0; i< elements.length; i++){
if (i<4) {
elements\[i\].parentNode.removeChild(elements\[i\]);
}
}
})
let ifm = await page.$(".sf-outro-form iframe")
const fm = await ifm.contentFrame();
let \_email = emails\[index\]
let \_name = \_email.split("@")\[0\]
let ninput = await fm.waitForSelector('.hs_firstname input');
ninput.type(\_name)
await wait(500)
let einput = await fm.waitForSelector('.hs_email input');
einput.type(\_email)
await wait(1000)
const acceptBtn = await fm.waitForSelector(\`.actions .hs-button\`);
acceptBtn.click()
console.log(index, emails\[index\])
await page.$("iframe.hs-form-iframe")
await wait(2000)
await browser.close()
} catch (error) { console.log("catch error: ",emails[index], error) } finally { console.log("gogoo") } await browser.close() }
async function awaitSync(ms) { await wait(ms) }
function wait(ms) { return new Promise(resolve =>setTimeout(() =>resolve(), ms)); };
// async function autoScroll(page){ // await page.evaluate(async () => { // console.log(111111111) // await new Promise((resolve, reject) => { // var totalHeight = 0; // var distance = 100; // var timer = setInterval(() => { // var scrollHeight = document.body.scrollHeight; // console.log(2222222,scrollHeight) // window.scrollBy(0, distance); // totalHeight += distance;
// if(totalHeight >= scrollHeight){ // clearInterval(timer); // resolve(); // } // }, 100); // }); // }); // }
// async function autoScrollN( // page, // delay = 500, // percent = 0.3, // duration = 16 // ) { // await page.evaluate(new Function(` // var lastDate; // var duration = ${duration}; // return new Promise((resolve, reject) => { // try { // let lastScroll = 0; // let retry = 0; // const MAX_SCROLL = Number.MAX_SAFE_INTEGER; // const instance = document.documentElement.scrollHeight; // const interval = setInterval(() => { // window.scrollBy(0, instance * ${percent}); // const scrollTop = document.documentElement.scrollTop; // if ( // scrollTop === MAX_SCROLL || // (Date.now() > lastDate + ${delay} && lastScroll === scrollTop) // ) { // clearInterval(interval); // resolve(); // } else { // lastScroll = scrollTop; // lastDate = Date.now(); // } // }, duration); // } catch (err) { // reject(err.toString()); // } // }); // `)); // };
forloop()
需要说明的是:
1、官方地址
https://www.superfluid.finance/
2、该填写白名单领取POAP的活动已经结束了。
3、这个网页防爬功能做的比较好,使用了iframe结构,操作起来比较麻烦,本次选择了比较取巧的方式。
const puppeteer = require('puppeteer-extra') const RecaptchaPlugin = require('puppeteer-extra-plugin-recaptcha')
puppeteer.use( RecaptchaPlugin({ provider: { id: '2captcha', token: '' // REPLACE THIS WITH YOUR OWN 2CAPTCHA API KEY ⚡ }, visualFeedback: true // colorize reCAPTCHAs (violet = detected, green = solved) }) )
let emails = [ // "test@ludaobi.com", // "demo@ludaobi.com", ] const inviteUrl = "https://www.superfluid.finance/" async function forloop(){ for (let index = 0; index < emails.length; index++) { await Promise.race([ helper(index), awaitSync(120000) ]) } }
async function helper(index){ const browser = await puppeteer.launch({ headless: false, timeout:0, devtools: false, }) try { let url = inviteUrl const pages = await browser.pages() const page = pages[0] await page.goto(url, { waitUntil: 'networkidle2', })
await page.evaluate(() => {
var shs = document.querySelectorAll(".scroll-content .sf-hero");
for(var i=0; i< shs.length; i++){
shs\[i\].parentNode.removeChild(shs\[i\]);
}
var elements = document.querySelectorAll(".scroll-content section");
for(var i=0; i< elements.length; i++){
if (i<4) {
elements\[i\].parentNode.removeChild(elements\[i\]);
}
}
})
let ifm = await page.$(".sf-outro-form iframe")
const fm = await ifm.contentFrame();
let \_email = emails\[index\]
let \_name = \_email.split("@")\[0\]
let ninput = await fm.waitForSelector('.hs_firstname input');
ninput.type(\_name)
await wait(500)
let einput = await fm.waitForSelector('.hs_email input');
einput.type(\_email)
await wait(1000)
const acceptBtn = await fm.waitForSelector(\`.actions .hs-button\`);
acceptBtn.click()
console.log(index, emails\[index\])
await page.$("iframe.hs-form-iframe")
await wait(2000)
await browser.close()
} catch (error) { console.log("catch error: ",emails[index], error) } finally { console.log("gogoo") } await browser.close() }
async function awaitSync(ms) { await wait(ms) }
function wait(ms) { return new Promise(resolve =>setTimeout(() =>resolve(), ms)); };
// async function autoScroll(page){ // await page.evaluate(async () => { // console.log(111111111) // await new Promise((resolve, reject) => { // var totalHeight = 0; // var distance = 100; // var timer = setInterval(() => { // var scrollHeight = document.body.scrollHeight; // console.log(2222222,scrollHeight) // window.scrollBy(0, distance); // totalHeight += distance;
// if(totalHeight >= scrollHeight){ // clearInterval(timer); // resolve(); // } // }, 100); // }); // }); // }
// async function autoScrollN( // page, // delay = 500, // percent = 0.3, // duration = 16 // ) { // await page.evaluate(new Function(` // var lastDate; // var duration = ${duration}; // return new Promise((resolve, reject) => { // try { // let lastScroll = 0; // let retry = 0; // const MAX_SCROLL = Number.MAX_SAFE_INTEGER; // const instance = document.documentElement.scrollHeight; // const interval = setInterval(() => { // window.scrollBy(0, instance * ${percent}); // const scrollTop = document.documentElement.scrollTop; // if ( // scrollTop === MAX_SCROLL || // (Date.now() > lastDate + ${delay} && lastScroll === scrollTop) // ) { // clearInterval(interval); // resolve(); // } else { // lastScroll = scrollTop; // lastDate = Date.now(); // } // }, duration); // } catch (err) { // reject(err.toString()); // } // }); // `)); // };
forloop()

Subscribe to MaxPj

Subscribe to MaxPj
<100 subscribers
<100 subscribers
No activity yet