0x0 题记
- 需求 最近老是有小伙伴在说自己手贱,没能存住钱,错过了大的升期。其实这事吧很难讲(心理学里边有一堆解说,后面我计划解说一下)。让小伙伴以后没借口呗。整个小工具存钱罐,锁死手贱党。只要时刻不到无法取钱。
- web3有用化 常常听人说,web3没什么有用。就几行代码工作,来整一个有用存钱罐把钱存智能合约里边,存一个定时。
0x1 智能合约
- chatGPT 有了AI人就更懒了。万事前问ChatGPT,几行代码都不想写了。输出如下:
- 距离 AI生成代码与实际仍是有一点距离。能用是能用!居然把合约整成了一次性了,还玩了一个布置即确定不好玩。需要稍微修正一下。大概修正如下,单人迁就用用。
// SPDX-License-Identifier: MIT
![01.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7cf2126e3d244216bb1b222024180aa6~tplv-k3u1fbpfcp-watermark.image?)
pragma solidity ^0.8.0;
contract SavingsPot {
address payable public owner; // 合约所有者地址
uint256 public lockTime; // 确定时刻
// uint256 public depositAmount; // 存款金额
constructor() {
owner = payable(msg.sender); // 设置合约所有者为布置合约的地址
// lockTime = _lockTime; // 设置确定时刻
}
// 存款函数,接纳以太币
function deposit(uint256 _lockTime) public payable {
require(msg.value > 0, "Deposit amount must be greater than 0"); // 存款金额必须大于0
require(msg.sender == owner, "Only owner can deposit"); // 只能拥有者存入
lockTime = block.timestamp + _lockTime; //修正确定时刻增加秒
}
// 提款函数,只能由合约所有者调用
function withdraw() public {
require(msg.sender == owner, "Only owner can withdraw"); // 只要合约所有者可以提款
require(block.timestamp >= lockTime, "Cannot withdraw until lock time"); // 确定时刻未到,不能提款
payable(msg.sender).transfer(address(this).balance); // 将存款金额转账给合约所有者
}
}
-
解说 简单解说一下,
block.timestamp
为获取当时区块的时刻,通过输入时刻_lockTime
增加多少秒来修正终究确定时刻lockTime
。只要当时时刻大于lockTime
时刻,才能解锁取钱。时刻不到取不了钱防止手贱。 - remix 在remix里边测一下,基本功能实现
0x2 前端展现
- chatGPT画的 看着还行要害无法跑啊
- 改改 套用曾经模板改改,能跑就行
0x3 跋文
- 示例 这东西仅仅测验示例,当然单人用没什么问题。假如再改改其实也可以多人。安全性其实也有。唯一不安全的便是或许可能增加锁死自己。
- 反思 其实这东西弄出来了估量小伙伴也不会用。其实真正手贱仍是人心,即便有方法进行物理锁死(因为不止智能合约一种方法,还有许多处理方案),他们断然不会选择。
- 挖苦 去中心化web3的dapp在开发的时候,许多时候都是为了去处理信赖或许信用的问题。但是呢现在情况,使用钱包授权,安全性(惧怕被钓鱼),用户认知不足,惧怕错误操作损失等等原因,反而用户不愿意用dapp,不信赖web3的dapp。如何让用户信赖和使用web3 dapp又是一个难题,即便简单代码开源也无效。