Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Submit Transactions Agent Pallet proposal #2467

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

OIyoung
Copy link

@OIyoung OIyoung commented Dec 16, 2024

Project Abstract

The Transactions Agent Pallet is designed to provide a proxy signing tool for the Substrate ecosystem, aiming to enhance the user interaction experience on Substrate chains. It includes signer accounts and proxy accounts, allowing a user’s wallet address (signer account) to perform on-chain transactions via a token-holding wallet address (proxy account) even without holding tokens.

Grant level

  • Level 1: Up to $10,000, 2 approvals
  • Level 2: Up to $30,000, 3 approvals
  • Level 3: Unlimited, 5 approvals (for >$100k: Web3 Foundation Council approval)

Application Checklist

  • The application template has been copied and aptly renamed (project_name.md).
  • I have read the application guidelines.
  • Payment details have been provided (Polkadot AssetHub (USDC & DOT) address in the application and bank details via email, if applicable).
  • I understand that an agreed upon percentage of each milestone will be paid in vested DOT, to the Polkadot address listed in the application.
  • I am aware that, in order to receive a grant, I (and the entity I represent) have to successfully complete a KYC/KYB check.
  • The software delivered for this grant will be released under an open-source license specified in the application.
  • The initial PR contains only one commit (squash and force-push if needed).
  • The grant will only be announced once the first milestone has been accepted (see the announcement guidelines).
  • I prefer the discussion of this application to take place in a private Element/Matrix channel. My username is: @_______:matrix.org (change the homeserver if you use a different one)

@github-actions github-actions bot added the admin-review This application requires a review from an admin. label Dec 16, 2024
Copy link
Contributor

github-actions bot commented Dec 16, 2024

CLA Assistant Lite bot All contributors have signed the CLA ✍️ ✅

@OIyoung
Copy link
Author

OIyoung commented Dec 16, 2024

I have read and hereby sign the Contributor License Agreement.

@OIyoung
Copy link
Author

OIyoung commented Dec 16, 2024

recheck in this Pull Request

@OIyoung OIyoung closed this Dec 16, 2024
@OIyoung OIyoung reopened this Dec 16, 2024
@semuelle semuelle self-assigned this Dec 17, 2024
Copy link
Contributor

@keeganquigley keeganquigley left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the application @OIyoung we don't pay to ETH mainnet addresses anymore, please see our payment options and let us know if you are willing to be paid in 50% vested DOT?

  • The system you're describing sounds very similar to pure proxies. What are the differences? Are you hearing from others that there is a great need in the ecosystem for this?
  • What advantages does a system like this have over using the existing proxy pallet?

@OIyoung
Copy link
Author

OIyoung commented Dec 23, 2024

Thanks for the application @OIyoung we don't pay to ETH mainnet addresses anymore, please see our payment options and let us know if you are willing to be paid in 50% vested DOT?

  • The system you're describing sounds very similar to pure proxies. What are the differences? Are you hearing from others that there is a great need in the ecosystem for this?
  • What advantages does a system like this have over using the existing proxy pallet?

@keeganquigley Thanks for your reply.

We are willing to change the payment method and accept 50% vested DOT.

In fact, we have used pure proxies before, and it is indeed a great feature. Although Transactions Agent Pallet, pure proxies, and proxy pallet may sound similar, they serve different functions and aim to achieve different goals.

Their differences are as follows:

​ 1. Problems They Solve

​ • Pure proxies reduce the exposure of the primary account’s private key.

​ • Transactions Agent Pallet improves the conversion rate from acquiring users to user registration by allowing users to use Substrate applications without needing tokens.

​ 2. Functions of Accounts

​ • Pure proxies are new accounts created (not assigned) by a primary account. The primary account acts as a proxy on behalf of the pure proxy. Pure proxies are keyless, non-deterministic accounts, meaning they do not have private keys but possess randomly generated addresses.

​ • The proxy accounts in the Transactions Agent Pallet are controlled accounts with private keys. Their primary tasks include not only signing transactions on behalf of others but also paying gas fees for the signed accounts and implementing various payment strategies.

​ 3. User Entry Barriers

​ • Proxy pallet requires users to pay at least one transaction’s gas fee for authorization.

​ • Transactions Agent Pallet is barrier-free for users, allowing them to make calls without gas.

In simple terms:

​ • Pure proxies enhance the security of the primary account’s signature, serving as a security tool that allows users to interact with DAPPs more safely.

​ • Proxy pallet addresses the issue of gas fees during transactions but has an entry barrier requiring authorization.

​ • Transactions Agent Pallet is a tool designed for operational purposes, enabling more users to utilize DAPPs.

These features are not mutually exclusive; they can even complement each other. For instance, a sub-key can be generated via pure proxies, and Transactions Agent Pallet can then be used to call the proxy pallet for authorized transactions.

Regarding the project’s advantages:

We are aware that the Substrate ecosystem has many proposals aimed at solving technical and security issues. However, few consider where the users are and how to acquire them. Transactions Agent Pallet provides a marketing tool for the Substrate ecosystem, attracting more users and converting a higher proportion of them into paying users.

Copy link
Member

@semuelle semuelle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the application and sorry for the delay here. This sounds quite interesting, but I have a few questions:

  • How does the user control the proxy account? Is it assumed that the user has an account in a wallet with native token?
  • How is the proxy gas fee calculated and paid for? Can you provide a sequence or architecture diagram to clarify the work being done?
  • Can you provide any evidence of you or your team having experience in the ecosystem and in developing and maintaining open source software?
  • Have you talked to any parachain teams that would be interested in integrating this?

@OIyoung
Copy link
Author

OIyoung commented Jan 14, 2025

Hello @semuelle , Thanks for your reply. Our response to these questions is as follows:

  • How does the user control the proxy account? Is it assumed that the user has an account in a wallet with native token?

    Users cannot control the proxy account, the proxy account is created by developers. The Transactions Agent Pallet is designed to address situations where the user has no tokens, which prevents them from using the DApp and may lead to user abandonment.

  • How is the proxy gas fee calculated and paid for? Can you provide a sequence or architecture diagram to clarify the work being done?

    No proxy gas fee. The gas fee for transactions is paid by the proxy account, and token for this account come from developers. The reason the developer pays the gas fee for users is that they want users to try their DApp without any barriers, allowing the DApp to gain more users.

    Below is a sequence:

    sequence

  • Can you provide any evidence of you or your team having experience in the ecosystem and in developing and maintaining open source software?

    Sure. Can we prove our team’s experience in a non-public manner? Because in some projects, we have committed to keeping our identities confidential.

  • Have you talked to any parachain teams that would be interested in integrating this?

    Yes, there have been some informal discussions since this is still just an idea. From the perspective of user conversion in marketing, we are confident that this feature will be highly beneficial for parachain user conversion.

If these questions haven’t been explained clearly, please feel free to let me know.

@semuelle
Copy link
Member

  • Sure. Can we prove our team’s experience in a non-public manner? Because in some projects, we have committed to keeping our identities confidential.

Yes, please send an email to [email protected] with a reference to this pull request. Thanks.

@keeganquigley keeganquigley added changes requested The team needs to clarify a few things first. and removed stale labels Jan 14, 2025
@OIyoung
Copy link
Author

OIyoung commented Jan 15, 2025

Yes, please send an email to [email protected] with a reference to this pull request. Thanks.

@semuelle Thank you very much! We have sent the team introduction to your email. Please let me know if you need any more information.

@keeganquigley
Copy link
Contributor

Thanks @OIyoung see my email reply - I asked a few more team related questions.

@semuelle semuelle added ready for review The project is ready to be reviewed by the committee members. and removed changes requested The team needs to clarify a few things first. labels Feb 5, 2025
Copy link
Member

@semuelle semuelle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the late reply, @OIyoung. Could you expand on how the system would work from a parachain perspective? Would every proxy account receive an allowance until it's depleted? And what does the security check look like? Is it possible to ensure that a user is not simply calling a smart contract that burns the whole allowance?

Lastly, not sure if it applies here, but there seems to be an issue with native feeless transactions and missing existential deposits: paritytech/polkadot-sdk#3991. You didn't provide a development status section in your application; have you verified this idea beforehand?

@OIyoung
Copy link
Author

OIyoung commented Feb 10, 2025

Hello @semuelle , Thanks for your reply.

  1. Could you expand on how the system would work from a parachain perspective?

    First, when developers add the Transactions Agent Pallet to their chain, they also need to transfer an initial amount of funds to the proxy account of this Pallet. This fund is used to pay the transaction fees for the signing accounts. The role of the proxy account is to bear the transaction fees on behalf of the actual users, and it is generated from the PalletId.

  2. Would every proxy account receive an allowance until it's depleted?

    If the balance of the proxy account is insufficient, developers need to manually recharge it; otherwise, the proxy account will not function properly, resulting in users being unable to transact normally.

  3. And what does the security check look like?

    The security checks include the following aspects:

    • The most basic check is to verify user inputs, such as whether the transaction summary format is correct and whether the signature is valid.

    • For the nonce verification, since the unsigned transaction does not include the nonce format, we envision adding this parameter when formulating the transaction and setting up a StorageMap to store the nonce for each account.

    • Calculate gas using the methods provided by pallet_transaction_payment and check whether the proxy account has sufficient balance.

    • Estimate the maximum weight consumption and calculate the transaction priority based on the weight, using the transaction priority to reasonably create a ValidTransactionBuilder.

  4. Is it possible to ensure that a user is not simply calling a smart contract that burns the whole allowance?

    Theoretically, because we check the weight in the security checks, malicious users cannot consume the entire balance of the proxy account in a single transaction. However, to prevent this situation, we can set a maximum limit for the amount a proxy account can consume in a single transaction (which is typically used for all normal transactions). Alternatively, we can also restrict malicious user behavior by setting up whitelists or blacklists.

  5. Lastly, not sure if it applies here, but there seems to be an issue with native feeless transactions and missing existential deposits:

    It seems that this issue is related to our envisioned security check for the nonce value. We plan to manage the mapping of each account's nonce value through a StorageMap to ensure the safety of funds.

  6. You didn't provide a development status section in your application; have you verified this idea beforehand?

    The project has not yet entered the formal implementation phase, but we have conducted a thorough viability assessment of the required deliverables. Based on our extensive experience and proven track record in contributing to other open-source projects, the majority of the infrastructure deliverables fall well within our domain of expertise. This positions us strongly to ensure their successful implementation with minimal risk.

@OIyoung
Copy link
Author

OIyoung commented Feb 10, 2025

Hello @keeganquigley . We have responded to your question about the team in the email, please confirm.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
admin-review This application requires a review from an admin. ready for review The project is ready to be reviewed by the committee members.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants