2021-04-19 05:57 | 出处: 童刚
羊驼是一个币安智能链上的项目,刚一推出我就参与了,当时锁仓量有很大,热度相当高。不过项目方为了防止前期大家挖出后把代币全部卖掉,导致币价被砸盘,所以早期挖矿出来的奖励Alphca代币只有30%可以马上拿到,剩余70%会锁仓一个月。
不过即使有30%的收益,当时的年化利率也有100%+,所以我就大仓位参与了!
后来为了鼓励大家更长时间的锁仓,羊驼项目方又提出了一种新的代币,就是说可以把锁仓的Alphca的70%提取出来,转换成另一种代币叫做sAlphca,sAlphca即可以流通卖掉,也可以继续挖矿,否则锁仓的Alphca放在那里是没有收益的。
转换的具体操作如下图所示,依次执行图中的1-3:
但是我在操作时候犯了一个错误,我执行完前两步,突然想起我还有一小部分Alphca没有claim,所以我去做了别的操作,再回头过来执行claim,发现悲剧了,无法执行第三步,页面上的所有按钮都是灰色的,不能再点击。如下图所示:
也就是说我锁仓的那部分Alphca在进行合约转换时,停在了一个中间过程,既不能回退,也不能前进,相当于处于失控状态。数量有约9000个,价值几万元。
当时我的心情十分沮丧,一个误操作带来了这么大的影响。不过我很快调整了自己,既然事情已经发生,那么再懊悔也无济于事,下一步重点思考如何解决。
首先,我去官方网站查询了相关文档,发现下面内容:
图中红框的意思是:这三步操作一定要连续操作,但我恰好中断了!
看来什么时候阅读文档都是很重要的一件事情。
我后来加入了羊驼官方的电报群,但是留言后也没有回应,看来这条路走不通了,我还要想其他办法。
后来我想到去本末社群求助。本末的社群都是Defi高级玩家,聚集了众多高手和大佬。
为了提高沟通效率,我尽可能详细的描述了我遇到的问题,并给出了我解决问题的思路:
主要想法是:在bscscan的浏览器浏览合约代码,找到第三步执行的入口,调用合约把我锁仓的ALPACA给claim出来。
后来伟峰大大给我明确了方向:
归根到底,还是需要撸代码。我虽然对代码略知一二,但是还是需要得到专业程序员的帮助。
我付费寻找的程序员最好符合以下几个条件:
①懂智能合约
②懂Defi挖矿
③最好熟悉币安智能链。
不过在现实生活中,找到即懂代码,又懂Defi挖矿的人真的不容易,同时他还愿意帮我。
最终我退而求其次,找到一个朋友,他是代码高手,并且懂智能合约,不足之处是他不清楚Defi挖矿,也没有接触过币安智能链所用的编程语言Solidity。
为了更好的推动,我在石墨文档上做了一个共享文档,和朋友商议好,我这边的需求和他那边的进展都写在共享文档中,以文档方式交互可以大幅提升沟通效率。
下面是文档的部分交互内容:
一、历史操作步骤
第一步:创建合约:Create a contract to deposit the locked rewards into the Stronk Vault
https://bscscan.com/tx/0 xe8c376eae09908c7effc96c18713d74d6681314afafd68081c23a18dfb63xxxx
第二步:Deposit locked rewards into the Stronk Vault
https://bscscan.com/0 x3c91558dc97d20dd41a66f59702c08fc6e524fdcae429d1b7e157745df50xxxx
第三步:未执行
二、其它信息
合约地址:
https://bscscan.com/address/0 x6f695bd5ffd25149176629f8491a5099426ce7a7
羊驼官方文档:Converting locked rewards into sALPACA tokens
三、待做事情:
1、https://app.alpacafinance.org/stronk-vault
确认按钮“Claim your sALPACA” 具体执行了什么操作,如何调用合约
2、阅读合约代码,在https://bscscan.com/尝试单步运行智能合约,完成未执行的第三步
四、可参考完整步骤
钱包地址:0 x40baae1684a9689328272eb8470af2b54e5373f2
第一步: https://bscscan.com/tx/0 x01ed2377c591b22ee60c5e889ac83c581a61743168f8e568a7c6c0d062e19082
第二步:https://bscscan.com/tx/0 x7c64c6e65d722fb376fe4c5931a6b322985b8520dae7d7f8bb9488e3df4a9307
第三步:https://bscscan.com/tx/0 x4498b205f29f6ecd7aae43a9fff0bc3076c99dc41b60a90c2afcc94be25ed8eb
1. prepareHodl, 2. transferAll, 3. hodl
五、看网页代码
下载安装Chrome浏览器插件:ResourcesSaverExt。用chrome打开https://app.alpacafinance.org/stronk-vault 后按F12,点tab页上的ResourcesSaver-> Save all Resoures 保存网页源码。
搜 “Claim your sALPACA”,看app.alpacafinance.orgapp.alpacafinance.orgstaticjscomponentsstronkVaultHoldProcess.tsx
可以看到函数 HodlProcess 里实现了具体的三个步骤。
第一步 stage 1: prepareHodl
stronkAlpaca.prepareHodl
第二步 stage 2: alpaca.transferAll
alpaca.transferAll
第三步 stage 3: hodl
stronkAlpaca.hodl
六、 合约本地测试
从github取羊驼的合约代码:
git clone https://github.com/alpaca-finance/alpaca-contract.git
有 hardhat.config.ts,查知是以太坊开发工具hardhat的配置文件。
安装nodejs,npm安装hardhat及其依赖。
经过几天折腾,终于可以跑它自带的测程 StronkAlpaca.test.ts 了。
后续思路:在测试网试验直接调用第三步hodl。
优先在bsc 的testnet试验,因为这样环境最像bsc mainnet。可以试验下载一个钱包,生成帐号,去测试网领代币,模拟羊驼挖矿等操作。
如果bsc testnet不好用,可以用以太坊的testnet?如果testnet不好用,可以自己搭以太坊私链来测试?
测试是写个小程序,用钱包私钥作签名,调用区块链上合约的hodl。
小程序用什么语言写?羊驼网站和羊驼合约测试源码调hodl都是用typescript,可以直接参考,但之前没用过typescript,还需学习这个语言的基本用法。也可以用别的语言?java,python,golang都有库可以和以太坊通信,但也要学习。还是用typescript吧。
七、bsc测试网的说明
https://binance-wallet.gitbook.io/binance-chain-extension-wallet/best-practice/untitled
https://docs.binance.org/smart-chain/validator/testnet.html
如何申请测试网的funds
https://community.binance.org/topic/3851/please-fix-the-faucet-send-me-some-testnet-funds
需要Twitter分享才可以领取
需要通过发送Tweet并分享 tweets URL来获得测试币。每个账户每天可以领取一次,每次得到5BNB。
上述阅读代码和搭建测试环境将近花了两周的时间,这期间我的朋友自学了Solidity,弄清楚了代码架构,提出可以在币安智能链的测试网上进行部署测试,我一听这个主意不错。但是发现却无法申请测试网的BNB代币。
我按照币安网站的相关说明,把申请测试网代币的BNB地址发推特,经过一系列操作,终于获得了测试网代币,但是在测试网部署合约没有想象的容易,遇到不少错误提示,事情又陷入了僵局。
某天晚上,我和他面对面进行了沟通,经过查看代码结构,我向他确认了第三步是执行 stage 3: hodl,且这个函数没有入参,执行起来比较方便,我当机立断,决定不在测试网部署了,直接在现网上进行尝试。
具体操作就是找到第三步执行的入口,直接调用合约中的hodl函数。
我清楚记得当时执行操作时的场景,心理压力还是挺大的,毕竟可能就只有这一次机会。
我首先在小狐狸钱包里面添加了sAlphca的合约地址,这样如果我转换成功,我可以在钱包中第一时间确认我收到了相关代币。
然后利用币安智能链的浏览器,连接小狐狸钱包,找到当时前端页面上第三步所对应的HOLD函数,手动执行。
具体步骤如下:
0、在bscscan浏览器找到相关合约的位置
https://bscscan.com/address/0 x6f695bd5ffd25149176629f8491a5099426ce7a7
1、选择Contract
2、选择Write Contrace
3、连接小狐狸钱包--点击 Conncet to Web3
4、执行hodl函数中的“Write”操作
经过短暂的等待,几千个sAlpaca出现在我的小狐狸钱包里,经历了这种失而复得,心里十分高兴,找回的sAlpaca如下图所示:
通过这件事情,我不仅找回了丢失的代币,还学习了一些新技能,很开心,正应了那句老话:世上没有白走的路,每一步都算数。
除此之外,我还有以下几点感受:
1、在发生了问题之后,抱怨和懊恼是没有用的,要迅速调整心情,进入思考模式,摆脱情绪影响,相信方法总比困难多。
2、在自身能力不够的情况下,要积极寻求外界帮助。为了节省他人时间,在求助时一定要详细阐述自己遇到的问题,并附上自己的解决思路。你思考的越认真越深入,得到的反馈就会更有价值
3、要学会感恩,在此过程中我得到了不少人的帮助,在问题解决后,我不仅给相关的人及时进行了反馈,告知问题已成功解决,并附上了大红包,真诚的对他们表示感谢。
祝各位在牛市都有所斩获!