是否可以在 Solidity 智能合约创建上预留一个地址用于收税?

2024-03-15

我正在使用 Solidity 编程语言,并尝试实现一个合约,即每笔交易都会扣除税费,并且该税费应该转移到正在创建的合约的某个特定地址。那可能吗?


是的,这是可能的。所有以太坊代币标准(ERC-20、ERC-721...)仅定义一个接口和很少的其他点(例如何时发出事件)。因此,您可以根据需要自由地实现这些方法。


假设你有一个非常简单的transfer()实施无需任何费用。

注意:这不遵循 ERC-* 标准,并且容易受到整数溢出 https://swcregistry.io/docs/SWC-101坚固度

function transfer(address _to, uint256 _amount) external {
    balances[msg.sender] -= _amount;
    balances[_to] += _amount;
}

添加费用只是一个小计算的问题:

address admin = address(0x123);

function transfer(address _to, uint256 _amount) external returns (bool) {
    uint256 fee = (_amount / 100) * 3; // Calculate 3% fee

    balances[msg.sender] -= _amount; // subtract the full amount
    balances[admin] += fee; // add the fee to the admin balance
    balances[_to] += (_amount - fee); // add the remainder to the recipient balance
}

注意:这是为了演示基础知识,并没有考虑少数情况,例如_amount其价值不能被 100 整除(在这种情况下,费用不会正好是 3%)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 Solidity 智能合约创建上预留一个地址用于收税? 的相关文章

  • Solidity、Solc 错误:无法构造包含(嵌套)映射的结构

    我正在使用由 npm 安装的 Solc 版本 0 7 0 当我尝试创建包含映射的结构时 收到错误 无法构造包含 嵌套 映射的结构 请检查代码 SPDX License Identifier MIT pragma solidity 0 7 0
  • Solidity:ParserError:预期的编译指示、导入指令或合约/接口/库定义

    当我编写简单合约时 我也遇到了最新的 solc 0 5 2 版本 和 0 4 25 的错误 我尝试过以下步骤 已卸载的 Solc npm uninstall solc 安装的目标版本 npm install save 电子邮件受保护 cdn
  • web3.js如何搜索所有曾经创建的合约并查看地址

    我是 web3 js 和 Solidity 的新手 我的问题与我们在区块链上搜索的方式有关 如果我们知道合约地址 就很容易搜索特定合约 然而 我们如何使用最初用于创建合约的地址来查找和识别特定类型的合约 例如 我有一个合同 Contract
  • 区块链为何如此安全? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 昨天我读到一篇关于区块链的文章 根据它 区块链非常安全 我无法理解它如何安全 区块链如何确保数据安全 即使普通人也可以使用 saura
  • Solidity:在公共方法中返回数组

    我正在尝试创建一个返回数组的公共函数 这是错误 返回参数类型映射 uint256 gt struct ItemList Item storage ref 不能隐式转换为预期类型 第一个的类型 返回变量 uint256 内存 pragma s
  • 如何在 Python 和 web3.py 中获取 Solidity 恢复/需要错误原因

    我正在努力抓住要求 交易恢复时出错 但我得到了交易的哈希值 我正在使用web3 py def addParticipants request web3 Web3 HTTPProvider settings Blockchain IP add
  • Hedera 上几乎相同的交易中“gasUsed”值存在巨大差异 - 为什么?

    我注意到所使用的气体量之间存在差异 通过交易几乎是相同的 我正在调用智能合约 连续两次使用相同的参数 两者之间的唯一区别 是我正在设置gasLimit到精确值 由返回eth estimateGas在第一个中 我正在设置gasLimit to
  • Solidity 中的状态变量是什么?

    我读过一些关于storage memory and view pure 但我并不完全理解它们 我有以下代码 contract struct Random uint32 state uint8 i function main pure int
  • Solidity - 输入 JSON 描述的 Solidity 代码

    我想编译我的以太坊 HelloWorld sol 智能合约 在所有教程中 您都是这样做的 var solc require solc var compiledContract solc compile fs readFileSync Hel
  • Metamask 停止注入 web3.js

    据我们所知 从2020年1月13日开始 metamask将不再注入web3 js 我们应该采取哪些方法来停止对web3的依赖 另外 我们如何使用目前正在注入 web3 js 的现有 Metamask 来测试它 window ethereum
  • ERC721:转账调用者不是所有者也不是批准的

    我有一个 nftToken 合约 可以将代币铸造到 msg sender 然后我在市场合约中有一个函数 可以将 nft 从所有者转移到市场合约 但是 我收到一条错误消息 ERC721 转账调用者不是所有者也不是批准的 这是我的 nftCon
  • Solidity有HTTP请求功能吗?

    我正在使用以太坊制作一个项目 在这个项目中 我正在签订一份名为 A 的合同 当我向 A 发送消息时 我希望 A 发出网络请求 Solidity 是否可以使用 http 请求 方法 GET POST 以太坊区块链无法与外界交互 否则它将不再是
  • Solidity ParserError:预期为“;”但得到了“{”

    使用版本0 6 0 pragma solidity 0 6 0 contract Test function sendValue address payable recipient uint256 amount external bool
  • 在 Hedera 区块链中创建智能合约时出现错误“Transaction Oversize”

    我的 bin 文件大小只有 18kb 我还得到了使用 IPFS 的解决方案 但不知道如何使用它 如果有任何使用 IPFS 的参考 请分享给我 错误 PrecheckStatusError 交易 电子邮件受保护 cdn cgi l email
  • 如何获取以太坊账户余额?

    如何以编程方式发现以太坊区块链上给定账户中有多少 ETH 在网上 不是程序化的 而是为了完整性 如果您只想获取帐户或合约的余额 您可以访问http etherchain org http etherchain org or http eth
  • 在 C# 中解析 Cryptocompare API Json 数据

    我正在加载数据 这是返回 Response Success Type 100 Aggregated false Data time 1504979760 high 14 26 low 14 26 open 14 26 volumefrom
  • 在 Solidity 中初始化一个大的固定长度数组

    我正在以太坊上构建一个游戏作为我的第一个项目 但我面临着存储和天然气限制 我想在区块链上存储一个存储智能合约 以便在部署后查询 我确实需要使用手动插入的常量值来初始化固定长度数组 我的情况如下 contract A some states
  • 区块链是分布式数据库吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 大多数文章都将区块链视为分布式数据库 这是否意味着我们可以在区块链中存储任何类型的数据 例如音频 视频 pdf 将区块链视为相对较慢
  • Solidity 中的地址(0)是什么

    谁能向我解释一下什么address 0 是在 Solidity 中吗 我在文档中找到了以下内容 但对我来说并没有真正意义 如果目标账户是零账户 地址为0的账户 则交易创建一个新合约 如前所述 该合约的地址不是零地址 而是从发送方及其发送的交
  • 如何发送wei/eth到合约地址? (使用truffle javascript测试)

    我正在尝试将 wei eth 发送到我的 Solidity 合约的地址 该合约具有外部应付回退功能 我下面的 truffle javascript 测试不会导致 instance address 的余额获得任何 wei instance a

随机推荐