dashed-slug.net › Forums › General discussion › Giving coins to users programmatically
Tagged: coin adapter, internal transfer, move, php api
- This topic has 16 replies, 2 voices, and was last updated 2 years, 9 months ago by alexg.
-
AuthorPosts
-
February 19, 2022 at 4:24 pm #11490AnonymousInactive
Hello,
I been working on a Gaming Service that will allow games to interface to my WordPress to check for user accounts and cloud saving/encryption but I want to add a feature to allow the Games to give players my site’s custom coins as a reward but the wp_wallets_txs database is kinda weird and has no reference/example row in the data so I have a couple of questions as I know it’s possible to do as there is already a faucet feature which works the same way basically.
How would I go about giving a user X amount of coins? If I were to make a dummy account and use his account Id as the sender, could that work or would it’s account go negative and mess things up on my site when it tries to send more coins when it’s account worth is negative? Or is Negative not going to glitch as it’s just a negative integer on a dummy account that no one will use or send to?
The main goal of this is so that I could allow users to gain currencies by watching ads or playing approved games to earn coins to exchange for things on my shop and some extras like gift cards to food places or gaming platforms for a month or 2.
February 21, 2022 at 10:45 am #11492alexgKeymasterHello,
You should not manipulate the
wp_wallets_txs
table directly for a number of reasons. Mainly, the table is going to be removed in the next major version 6.0.0 of the plugin. You are quite right that the table is kinda weird; in fact, in the past I have ranted about how bad this is, and I’m looking forward to get rid of it!Instead, to create a transfer, you can use the
wallets_api_move
action from the PHP API:https://wallets-phpdoc.dashed-slug.net/classes/Dashed_Slug_Wallets_PHP_API.html#method_api_move_action. This PHP API will be preserved in future versions of the plugin.
A gaming service is a very interesting application. If I may ask, are you developing this for use on your site only, or is it something that you plan to publish/sell somewhere?
with regards
https://mail.zoho.com/zm/#mail/folder/inbox/p/1645276382613100001
Hello,
Yes this is a typical problem. Hopefully there will not be any such issues once the WP-REST API becomes available. In the meantime, look into your cashing plugin and see if you can disable
February 26, 2022 at 3:37 pm #11520AnonymousInactiveYou’re not joking when you say it’s bad. It’s kinda horrible and I was just like ‘oh s**t’ when I saw it. That do_action call is going to work perfect, I just built a rpc function to let me call it by RPC which works better than trying to do more SQL lol (hasn’t tested yet tho). Thank you very much for your help, you’re a G bro.
The gaming service I have been debating because I built my own encryption method that takes a String to convert it to a Int based on a ‘Key file’ than run that Int into a ‘Equation file’ that will contain different types of math to either encrypt the Int or to decrypt it for the String so the issue I kinda have is if you never routinely modified your files than it would be possible for someone to have programs to read incoming and outgoing data and maybe taking 2 years could figure out some or all of how your encryption is done based on certain words. I was thinking about at first offering a service that you would run a new python file in the background that contains your database information and game cloud data you could want and have clients to use my master so that encryption would be routinely (daily) changed by AI so ‘Hello World’ would have a different value everyday based on every ‘Key File’ ‘Equation File’ pair possible than at some point testing a new python script that would act like it’s own master but could use the same keys on my official master.
I got it working as I bought a half made City Builder (Clash of Clans style) and have been able to login/register users AND setup key based value saving to a database which is used in c# like “BAServiceController.GetValue(“KEY NAME HERE”);” which would return the value of the information stored under that key through html which could have the encryption turned off or on based on if that information needs to be kept hidden but I don’t currently encrypt anything besides the user information because I don’t care if people see the json structure of the game I bought to test with, with a change of a variable tho it would encrypt when sending.
February 26, 2022 at 4:52 pm #11521AnonymousInactiveIs there a way to give a account my custom coin from the fiat adapter? Everyone’s account is currently sitting at 0 and I would like to give a admin account all the coins which will be distributed from itself.
February 28, 2022 at 10:08 am #11524alexgKeymasterHello,
Thanks for sharing your plans. I’m not sure you’re using the word encryption correctly. I am not using any encryption in the plugins, as it’s not relevant. If you are referring to JSON-API calls, these are secured by TLS against eavesdropping, man-in-the-middle and replay attacks, but that’s got nothing to do with the plugin code.
I also didn’t understand whether you will make your work available to others or whether it’s for use in your site only. In any case, I wish you the best of luck with your project!
Giving coins is not related to coin adapters. To modify the ledger, use the
wallets_api_move
action as discussed above. This will let you transfer any type of coins from the admin account, whether they were introduced using the fiat adapter or not.with regards
March 2, 2022 at 2:32 am #11535AnonymousInactiveActually bro, I cant just send coins as an admin account with no coins. I want to know how to I can ‘add/create’ my custom fiat coins to a account so I can send them? It’s basically just a virtual currency that I want to add to accounts but my admin account has 0
March 2, 2022 at 2:32 am #11536AnonymousInactiveYou have attempted to send LETS 20.00 from your account to the Austin Benjamin account.
Your transaction failed after being attempted a predetermined number of times and will not be retried any further. If you are unsure why your transaction failed, please contact the administrator.
Coin symbol: LETS
Amount: LETS 20.00 (in USD: n/a)
Fees: LETS 0.00 (in USD: n/a)
Amount after fees: LETS 20.00 (in USD: n/a)
Transaction ID: **ID WAS HERE**
Transaction created at: 2022-03-01 19:28:45
Comment: Rolled: 77
Tags: send wallets-faucet payoutMarch 2, 2022 at 8:16 am #11537alexgKeymasterOK I understand your point.
You could try and insert a fake “deposit” row for your admin user to the transactions table. For example, assuming your DB table prefix is
wp_
, and assuming you are not on multisite, you could do something like the following in your MySQL console:INSERT INTO wp_wallets_txs ( category, tags, account, address, txid, symbol, amount, created_time, updated_time, status ) VALUES ( 'deposit', 'foo bar', -- you can use any tags here to help you keep track of your deposits 1, -- assume this is your admin account's user_id '', -- address is not neeed UUID(), -- the txid value needs to be unique 'LETS', 100000, -- money printer goes brrr current_time(), current_time(), 'done' );
But that’s probably not the easiest way.
The easiest way would be to use the Airdrop extension. You can perform an airdrop of a fixed amount of any coin to a user role. If you are the only administrator and you do an airdrop on the administrators role, then your admin user will receive one “deposit”. You can then proceed to distribute these coins.
Install the Airdrop extension, then go to Tools → Airdrop to perform an immediate airdrop.
Hope this helps. Let me know if you face any problems doing this.
with regards
P.S. In the upcoming release I have addressed this, and it will be very easy to create/edit transactions in the local ledger via the admin screens. You’ll see!
March 2, 2022 at 8:58 pm #11540AnonymousInactiveNot going to lie, I would really love to see that feature. Thank you for your help and you nailed it for me, by seeing kaymaster I’m assuming Dashed Slug is yours and you’re doing great man! Everything came out perfect.
March 3, 2022 at 10:00 am #11543alexgKeymasterI’ve tried to add as many user requests into the upcoming release, prioritizing those that help with usability, and that are feasible on my part within a realistic time frame.
The release is delayed primarily due to the difficulties of managing gas fees on the CoinPayments platform. Just yesterday late at night I ran some successful live tests of my gas-distributing algo on the Ethereum blockchain. Now I just need to try to adapt this to BC Chain (BEP2) and BSC Chain (BEP20). I will have to leave Solana and Tron for a later time after the release, but at least the CoinPayments adapter is now able to be extended towards new blockchains with fees that require gas to deposit…
Thank you for your kind words on behalf of the entire dashed-slug team! :p
March 6, 2022 at 6:41 pm #11563AnonymousInactiveSo I ran into another issue and wonder if you could help me. I got everything working and during testing I got stuck on the actual sending part. It seems that it keeps trying to send the funds to the same user even tho I have specified a ID to send the funds to. So I have a Client (Postman, running post requests) and I am getting the server to send the funds which uses Python-WordPress-XMLRPC to send WP do_action. Everything seems like it should work but keeps returning the same thing, maybe I did something wrong?
March 6, 2022 at 6:42 pm #11564AnonymousInactive-=- PYTHON CODE – x[1] = USER ID … data[] = server sided variables like login, reward amount and reserve ID -=-
ww = clienter.call(getReward(str(x[1]), ‘LETS’, str(data[“reward”])))
return ‘SENT BY ‘ + data[“reserve_id”] + ‘ SENT TO ‘ + str(x[1]) + ‘ WITH ‘ + str(data[“reward”]) + ‘ RETURNED ‘ + wwRETURNED DATA
SENT BY 10523 SENT TO 10537 WITH 10 RETURNED Cannot send funds to self`
March 6, 2022 at 6:42 pm #11565AnonymousInactivefunction mynamespace_getReward( $args ) {
try{
do_action( ‘wallets_api_move’, array(‘symbol’ => (string) $args[1],’amount’ => (float) $args[2],’to_user_id’ => (int) $args[0],’skip_confirm’ => true) );
return “true”;
}catch (Exception $e) {
return $e->getMessage();
}
}March 6, 2022 at 7:54 pm #11567AnonymousInactiveGot it figured out, ‘from_user_id’ wasn’t optional with XMLRPC I guess. So far I can’t send to the admin account (because the id is zero/0) but all the other accounts seem to be working as of right now. I was able to transfer 200 LETS from the reserve account into a dummy membership account I had and it all works. I see now it’s extremely easy to make very cool applications. Buddypress picks up the action and automatically will send messages about it to users, I’m not sure if I will keep that enabled.
March 7, 2022 at 8:24 am #11568alexgKeymasterHello,
Glad you figured the issue out.
The admin’s user_id is not
0
, it should be1
by default.I think WordPress starts counting from 1 because in MySQL, the primary keys for users, posts, etc are defined as
AUTO_INCREMENT
columns, andAUTO_INCREMENT
columns start from1
.In fact, if you are certain that the user_id of the admin is 0, you may be facing bigger problems, caused by improperly exporting and reimporting a database via phpMyAdmin. I have blogged about it here. Are you able to create new posts? If not, you may be ecountering this issue.
Hope this helps.
-
AuthorPosts
- You must be logged in to reply to this topic.