MoreRSS

site iconLenChou | 周良修改

95后天蝎男,产品经理。曾就职于微脉。做过社交电商、建筑SaaS、Crypto。高中退学,自学成才。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

LenChou | 周良的 RSS 预览

内部分享 PPT 与文档:浅析 SEO 排名优化技巧

2024-08-23 14:44:00

最近 SEO 又火起来了特别是在出海圈,很多朋友私底下在频繁咨询我。故放出 17 年在微脉内部做的一次 SEO 分享 PPT 和相关文档。内容比较古早,但基本涵盖 SEO 的核心,在如今用于实战依旧有效,希望能帮助到有需要的朋友。

(地榆是我的花名,别笑…)

SEO 分享 PPT 下载

SEO 基础规范文档:https://shimo.im/doc/aLMG4FtoLZ8JRoKC

SEO 相关的尬聊:https://shimo.im/doc/7GVFl8rwU2snuY6X·

全面解析 Jupiter 协议:Solana 上的高效套利与收益指南

2024-07-21 05:00:00

JUP 是 Solana 上的头部 DEX 聚合器,为用户提供快速、高效的代币交易体验。它的主要功能是为用户提供最佳的代币兑换路径,同时支持多种流动性池和 AMM(自动化做市商)协议。

本文将详细介绍 JUP 协议的核心功能、潜在的套利策略,以及如何利用 JUP 和其流动性池(JLP)来获利。

什么是 JUP 协议?

Jupiter Protocol 是 Solana 上的去中心化交易协议的聚合器。其核心特点包括:

例如,当用户在不同 DEX 上发现价格差异时,JUP 可以快速整合这些交易路径,实现最佳套利。此外,如果用户需要将大额资金兑换为小币种,JUP 会通过拆分路径来降低滑点,保障交易效率。

  1. 最佳交易路径:JUP 集成了 Solana 上的多个 DEX(如 Raydium、Orca、Serum 等),通过算法为用户计算最优交易路径。
  2. 低滑点交易:通过拆分大额交易为多路径执行,有效降低滑点,提升用户体验。例如,当用户需要将 1000 SOL 换为 USDC 时,JUP 会将交易拆分为多个小额部分,分别通过 Raydium 和 Orca 的不同流动性池完成兑换,避免了单一池子滑点过高的问题,从而以更优的价格完成交易。
  3. 快速结算:借助 Solana 的高性能区块链特性,JUP 的交易结算速度非常快。
  4. 跨链桥支持:JUP 通过整合跨链桥,支持用户在其他链上的资产转移到 Solana 并进行交易。

JLP 流动性池是什么?

JLP 是 JUP 协议提供的流动性池,用于为协议提供额外的流动性支持,同时为流动性提供者(LP)创造收益来源。流动性提供者可以通过存入资产到 JLP 池中赚取以下收益:

  • 交易手续费分成。

  • 流动性挖矿奖励(通常以 JUP 代币形式发放)。

JLP 的设计使得它能够高效处理大量交易,同时为流动性提供者带来稳定回报。

如何通过 JUP 和 JLP 获利?

以下是几种常见的赚钱方式:

  1. 跨平台套利

利用 JUP 协议的聚合功能,可以寻找不同 DEX 之间的价格差异。例如:

  • 假设在 Raydium 上 1 SOL 的价格是 25 USDC,而在 Orca 上 1 SOL 的价格是 26 USDC。使用 JUP,您可以在 Raydium 上买入 SOL,然后在 Orca 上卖出,赚取差价。

  • 另一个例子是,当 Orca 的 USDT/USDC 兑换率高于 Serum 时,通过 JUP 可以快速完成两边的套利操作,提升利润率。

  • 在 Raydium 上发现 SOL/USDC 的价格低于 Orca。

  • 使用 JUP 找到最佳兑换路径,快速完成套利交易。

  • 提供流动性较强的代币(如 SOL、USDC)以降低交易成本。

  1. 流动性挖矿

通过向 JLP 提供流动性,赚取以下收益:

例如,根据最近的数据显示,参与 JLP 的流动性提供者年化收益率通常在 15%-25% 之间。以 SOL/USDC 池为例,一些流动性提供者在市场波动期间能够获得更高的回报,同时还能享受协议奖励分发的 JUP 代币。

  • 每笔交易的手续费。

  • JUP 协议分发的奖励代币。

  • 如果市场波动较大,还可以通过做市获取额外利润。

  1. 闪电贷套利

利用 JUP 的快速结算和低滑点特性,结合 Solana 上的闪电贷功能,实现无抵押的套利:

  • 借入大量资产,利用价格差完成交易。

  • 在偿还贷款后,保留利润。

  1. 代币投机

购买 JUP 代币本身是一种潜在的投机策略。如果您看好 JUP 协议的长期发展,可以在价格低位时购入并持有,等待增值。

套利注意事项

  • 在利用 JUP 和 JLP 获利时,需注意以下几点:

  • 网络费用:尽管 Solana 的费用极低,但频繁交易仍可能累计较高成本。

  • 滑点风险:在大额交易中,滑点可能导致额外损失。

  • 市场波动:加密市场价格波动剧烈,需及时调整策略。

  • 智能合约风险:尽管 JUP 已通过多方审计,但仍需警惕潜在漏洞。

总结

JUP 协议为 Solana 生态中的用户提供了一个功能强大的工具,可以实现高效的代币交易和跨平台套利。相比其他协议,JUP 拥有更低的交易成本和更高的执行速度,特别是在复杂的跨链操作中表现尤为出色。无论是通过提供流动性赚取收益,还是利用闪电贷套利,JUP 都为投资者和交易者提供了多样化的盈利途径。

随着 Solana 生态的持续扩展,JUP 和 JLP 的潜力也将进一步释放。无论您是新手还是资深套利者,JUP 都值得您深入研究并尝试使用。

使用 Cloudflare Workers 为 Bento.me 设置自定义域名

2024-05-15 05:00:00

Bento.me 是一个零代码创建个人主页的平台,以优雅美观的界面和使用简单而闻名。

但它唯一的缺点是:不支持自定义域名

但别担心,本文将用最简单、零成本的方式,帮助你为 Bento.me 绑定自定义域名。

1. 提前准备

  1. 你需要有一个 Bento.me 个人页面
  2. 注册/准备一个 Cloudflare 账号
  3. 拥有独立域名,并将其转移至 Cloudflare 管理 DNS

2. 创建 cloudflare Worker 项目

在终端中输入以下命令,创建一个基础的 Cloudflare Worker:

npm create cloudflare@latest

终端操作

然后按照终端内说明进行操作:

  • In which directory do you want to create your application? 你现在哪个目录创建应用

    • 默认或者自定义都可
  • What type of application do you want to create? 你想创建什么类型的应用?

    • 选择 “Hello World” Worker 即可
  • Do you want to use TypeScript? 你想使用 TypeScript 吗?

    • 选择 NO(用键盘→选择)
  • Do you want to use git for version control? 你想使用 Git 进行版本控制吗?

    • 选择 Yes
  • Do you want to deploy your application? 你想部署应用么?

    • 选择 Yes(如果你第一次使用,会自动打开网页要求登录)

完成后对应目录会出现一个文件夹,使用 Visual Studio Code 等代码编辑工具打开这个文件夹。

3. 设置环境变量

  1. 编辑 wrangler.toml 文件,在末尾添加下列内容:
[vars]BENTO_USERNAME = "len" # 替换为你的 Bento 页面 ID,我的是 bento.me/lenBASE_URL = "https://bento.imzl.com" # 替换为你的自定义域名
  1. 在文件夹根目录创建 .dev.vars 文件,黏贴下列内容:
BENTO_USERNAME="len" # 替换为你的 Bento 页面 IDBASE_URL="http://127.0.0.1:8787"

4. 创建 Worker

  1. 编辑 /src/index.js 文件,替换为下列内容:
/* * 为 Bento.me 设置自定义域名 * 作者:len * 详情:https://imzl.com/bento-add-domain.html * 源代码来源:https://jayfranco.hashnode.dev/ */// 事件监听addEventListener('fetch', event => {  // 发生 fetch 事件时,用 handleRequest 函数结果做出响应  event.respondWith(handleRequest(event.request));});// 根据内容类型解析响应async function parseResponseByContentType(response, contentType) {  // 如果没有内容类型,响应以文本形式返回  if (!contentType) return await response.text();  // 根据内容类型不同,采取不同的操作  switch (true) {    case contentType.includes('application/json'):      // 如果是 JSON,以 JSON 字符串形式返回      return JSON.stringify(await response.json());    case contentType.includes('text/html'):      // 如果是 HTML,则使用 HTMLRewriter 对 response 进行转换      const transformedResponse = new HTMLRewriter()        .on('body', {          element(element) {            // 自定义 CSS 和 JS 可添加到 HTML 页面中            element.append(              `                <style>                  // 在这里输入你需要的自定义 CSS                </style>                `,              { html: true },            );            element.append(              `                <script>                  // 在这里输入你需要的自定义 JS                </script>                `,              { html: true },            );          },        })        .transform(response);      // 转换后的 response 以文本形式返回      return await transformedResponse.text();    case contentType.includes('font'):      // 如果内容类型是字体,响应将以 ArrayBuffer 形式返回      return await response.arrayBuffer();    case contentType.includes('image'):      // 如果内容类型是图片,响应将以 ArrayBuffer 形式返回      return await response.arrayBuffer()    default:      // 如果内容类型是其他类型,响应将以文本形式返回      return await response.text();  }}// 处理所有请求的函数async function handleRequest(request) {  // 从请求 URL 中提取路径  const path = new URL(request.url).pathname;  // 默认情况下,URL 设置为 "https://bento.me" + 路径  let url = 'https://bento.me' + path;  // 如果路径包含'v1',URL 将更改为 'https://api.bento.me' + 路径  if (path.includes('v1')) {    url = 'https://api.bento.me' + path;  }  // 如果 URL 为 "https://bento.me/",URL 将更改为 https://bento.me/' 后加上 BENTO User ID  if (url === 'https://bento.me/') {    url = 'https://bento.me/' + BENTO_USERNAME;  }  // 为 fetch 请求定义基本的 headers  let headers = {    'Access-Control-Allow-Origin': '*',    'Access-Control-Allow-Methods': 'GET,HEAD,POST,OPTIONS',  };  // 使用定义的 headers 获取 URL  const response = await fetch(url, { headers });  // 从响应 headers 中提取内容类型  const contentType = response.headers.get('content-type');  // 根据内容类型解析响应  let results = await parseResponseByContentType(response, contentType);  // 如果结果不是 ArrayBuffer  // 将所有对 bento API 的调用替换为我们的 BASE_URL  // 这是解决 CORS 错误的临时方案  if (!(results instanceof ArrayBuffer)) {    results = results.replaceAll('https://api.bento.me', BASE_URL);  }  // 将内容类型添加到 headers  headers['content-type'] = contentType;  // 返回带有结果和 headers 的新响应  return new Response(results, { headers });}
  1. 通过终端进入文件夹,运行代码查看页面:
npm run dev
  1. 查看无误后,部署到正式环境
npm run deploy

5. 在 Cloudflare 配置自定义域名

  1. 先确保你需要绑定的域名 DNS 已经设置为 Cloudflare;
  2. 进入「Workers 和 Pages」找到刚才 Push 的 Worker 项目;
  3. 在「设置 - 触发器」中添加自定义域名并等待生效即可;
  4. 现在,你可以访问 bento.imzl.com 查看我们的 Bento 页面了。

Crypto 阅读列表

2024-02-07 07:00:00

以下是一部分推荐阅读的 Crypto 相关文章列表,从 Dan Romero Blog 复制过来的,以英文为主我已经把标题翻译为中文,建议按时间顺序阅读:

2008

2011

2013

2014

2016

2017

2018

2019

2020

2021

2022

2023

Atomicals 挖矿程序部署与钱包管理

2023-12-27 01:13:00

部署

  1. 安装 Node.js
  2. git clone https://github.com/atomicals/atomicals-js.git
  3. cd atomicals-JavaScript
  4. npm install -g typescript
  5. npm run build
  6. npm install -g yarn
  7. yarn install
  8. yarn cli wallet-init //这是创建钱包命令

最后一步是创建钱包,命令运行后,会在文件夹内生成一个 wallet.json 文件,保存着助记词和私钥,请务必保存好该文件。

创建钱包后,会自动生成两个地址,Primary Address 及 Funding Address:

Primary:用于接收Atomicals生态资产
Funding:用于铸造(挖矿)过程的中转钱包,通常是往 Funding 地址中存入相应数量的 BTC,用于铸造相应资产。

常用指令

铸造 FT 命令:

yarn cli mint-dft dmint --satsbyte 30

yarn cli mint-dft quark --satsbyte=100

dmint 和 quark 是 token 名称,请修改成相对应 FT 资产名称。
satsbyte 是矿工费设置,设置 100 即为 100聪/KB 的费用 Mint 对应资产。

铸造图片NFT命令:

yarn cli mint-nft "\punk0000.png" --satsbyte 30 --satsoutput 1000 --bitworkc 233

查询余额命令:

npm run cli balances

Starknet 早期社区成员计划申请指南

2023-11-01 21:00:00

Starknet,这个在ETH L2 中迅速崛起的名字,如今正通过其新推出的早期社区成员计划(ECMP)为其社区成员提供前所未有的机遇。这个计划不仅仅是关于技术贡献,更是关于每一个助力 Starknet 生态系统前进的个人。

作为一个坚定的 Starknet 支持者,我认为这是一个独一无二的机会,可以让社区成员,无论是开发者、内容创作者、会议组织者还是技术讨论的积极参与者,都得到认可和奖励。

申请过程和时间线

申请开始于 2023 年 10 月 30 日,截止到 11 月 23 日。评审委员会将在 12 月 29 日做出决定。感兴趣的个人和项目都应当在此期间提交申请。

谁可以申请?

ECMP 面向那些积极贡献于 Starknet 生态系统的个人。无论是通过技术讨论、组织活动、发布品牌内容,还是以其他方式,所有为生态系统增添活力和资源的个人都应当考虑申请。

评估标准

评估标准包括影响力、重要性、努力程度和原创性。这意味着不仅仅是代码行数,还包括你对社区的影响、你的工作对项目的重要性、你付出的努力,以及你的工作的独创性。

申请过程

项目和个人都需要通过提供的链接提交申请,包括 Telegram ID、电子邮件和 Starknet 钱包地址。每个项目和个人都将由委员会进行评估。

申请地址:https://ecmp.starknet.io/form-individual

Starknet 官方公告:https://community.starknet.io/t/announcing-the-early-community-member-program/102092

注意事项

重要的是,受制裁的人员或居住在受制裁国家的人员,以及与美国相关的人士,都不符合参与条件。

这个计划是 Starknet 社区成长和发展的重要一步。它不仅奖励那些默默无闻的英雄们,也鼓励更多的人加入并为这个生态系统贡献力量。如果你是 Starknet 的忠实支持者,请不要错过这个机会。