Mods / Vinconomy - Cross Server Trading

Tags: #Other #Utility
Author: SeveredSkullz
Side: Server
Created: Oct 18th at 8:07 PM
Last modified: Oct 30th at 10:43 PM
Downloads: 18
Follow Unfollow 7

For testers:
Download from Github.zip


Note: This project is currently heavily WIP. While it does function, not all features are fully implemented or tested. Documentation is also ongoing.

 

A Self-Hosted option for utilizing Vinconomy's Cross Server Trading. Cross Server Trading supports a number of configurations on how to interact with the network - trade locally between a set of privately owned servers, a network of trusted communities, singleplayer servers, or anything in between.

Some common intended use cases:

  • A group of friends that only play occasionally on their own single player worlds but still want to interact with friends and trade items
  • A Community that has multiple servers - such as dedicated PvP and PvE servers, or seasonal servers with specific rules
  • Multiple smaller communities that would like to interact with one another but don't want to combine servers
  • A Community with a public server but wants to interact with other players that might not be able to join (server full, latency, regional restrictions, etc.)

 

The Trade Server (this software) consists of a set of Trade Networks which can be either public or private. Servers can either join the "GLOBAL" network available to all players, or create their own network. Once the the server joins the network, players can then use Vinconomy's Trade Center to search for items they desire to purchase from other shops and summon the shop's trader.

 

This system is designed to work with modded items as well - if your server does not have the appropriate mods needed, you will simply not see the item for purchase in the trader GUI.

 

How to Join:

  1. Point your server to a Trade Server by setting the `tradingNetworkUrl` in Vinconomy's Mod Config and enable the trade network feature by setting `tradingNetworkEnabled` to `true`.
  2. Join your server ingame
  3. type `/vincon network register` to register your Trade Network Node with the Trade Server
  4. type` /vincon network join [Network Access Key]` to join the the Trade Network. By default, there will be a "GLOBAL" join key available for everyone
  5. Wait for your request to be accepted (This is instant if the Network has Auto-Accept Requests on, such as the GLOBAL network)
  6. Congratulations! You are now on the network and can begin buying and selling items to other servers

 

 

Note: It seems the JAR file is too big for ModDB. In the meantime, I have hosted the file directly through GitHub

The current version is 0.0.2

 

Mod Version Downloads Released Changelog Download
0.0.2 18 Oct 30th at 10:43 PM Download from Github.zip

What's Changed

  • Significant progress on Network ownership and management.
  • Added new utility endpoints for viewing information regarding a specific node or network.
  • Added new bulk update endpoint for product updates instead of having Vintage Story send them of one-by-one.
  • Decoupled MVN artifact name from docker script by utilizing a "Docker" profile
  • Better error handling and HTTP response codes for error states

Full Changelog: 0.0.1...0.0.2


6 Comments (oldest first | newest first)

💬 SeveredSkullz , Nov 13th at 10:18 PM

Jaggedcan9ne

- This is only needed if you intend to host your own trade network. If you just want to join someone else that is already hosting this, simply configure it to their IP / URL instead. When specifying the IP, make sure you put "http://" in front of the domain or IP

💬 Jaggedcan9ne, Nov 13th at 12:32 AM

Is this already supported by just the base vinconomy mod, or do I need to have this one running in order to use it? Tried to register and it told me "the 'mycoolserver.com' scheme wasnt supported."

💬 SeveredSkullz , Oct 22nd at 6:26 PM

Seralth - The main reason is because - if Minecraft is any indication - most people playing VS are likely going to be children and older folk that might not have the know-how to set up a dedicated server, set up a static IP, domain name, or use something like No-IP.org to redirect traffic to their server, deal with port-forwarding, firewalls, NAT, installing and configuring a MySQL server, and finally getting the API talking correctly to everything. As I suspect this will easily be 75%+ of the users, I wanted something simple as an option so that they could still interact and participate without needing all the technical knowledge. This way I can just host one of these myself and say something like

Join your single player game and run these 3 chat commands ingame:
/vincon network configure mycoolserver.com:8080

/vincon network register

/vincon network join

 

And then they are good to go and set up to use the default Global server. If they want to make their own then they can do so.

💬 Seralth, Oct 22nd at 7:32 AM

SeveredSkullz

 

I was more confused over the existance of a global server at all, since from all perspectives i could think of it basically is a doomed idea. But if its just going to exist for the sake of existing with full awareness of what could happen to it should people decide to abuse it. Its actually less concerning to me then if you had some harebrained idea to try to secure it. 

 

Having it there just to have it is for sure better than not. Good work, and looking forward to seeing how the project progresses and the resulting community interaction that can spring forth from this. This has a serious chance to revolutionize the community.

💬 SeveredSkullz , Oct 20th at 4:10 PM (modified Oct 20th at 4:15 PM)

Seralth  - To put it bluntly: There is nothing I can do to prevent it. The game itself is highly moddable, allows code to be executed on the clients without the server knowing, creative mode, cheat mods, and harmony patching is also a thing. If trillion dollar AAA gaming companies cant even solve cheating in 30+ years in a CLOSED software ecosystem, I certainly wont be able to achieve that in a OPEN ecosystem - even less so when the source code is visible to the public.

 

Every single security mechanism I can or would put into place could be easily circumvented one way or another:

  • Disable Creative Mode
    • Make a custom mod that re-enables it either via an item or command
    • Harmony Patch out my code that disables Creative mode
    • Introduce cheat mod that turns dirt into desired item like a stack of 1000 steel ingots
  • Check if they entered creative mode and disable their Network Node
    • Again, Harmony patch out my code.
    • Disable reporting code to trade server, etc.
  • Blacklist cheat mods
    • Simply rename the mod ID or change the code up a bit to get a new MD5 hash
    • Harmony Patch blacklist check
  • Disallow mods entirely and require it to be 100% vanilla
    • Harmony Patch at it again!
    • Doesnt prevent creative mode
  • IP Ban known cheaters
    • VPNs exist
    • ISPs typically do not give customers static IPs, so it could just be a waiting game until their DCHP lease expires
  • Account ban known cheaters
    • New account
    • 1 bad actor on a public server would get the whole server banned

 

On top of this, the security is deliberately lightweight to allow younger audiances the ability to use this feature, which only requires an API key that gets assigned to you upon registration. The more Tech Savvy folk could simply open up some software like Postman and send forged HTTP requests directly to the backend without even opening Vintage Story.

All of this to say: Its not even worth trying to consider security or prevent cheating with the sheer amount of options malicious players have at their disposal. The backend is pretty open, and given my code is visible on GitHub, any security mechanism I put in place can, and will, be easily seen and allow them to get around it.

If cheating is a legitimate concern of yours, the simple solution is not to join the Global Network, and instead create a private network to invite your friends to instead. If you wish to join a global network, the option of hosting your own server with this software also exists - host it yourself, send them the IP or URL and enjoy the features. I also suspect the amount of effort needed to cheat the system is far greater than simply jumping into creative mode and spawning the desired items. The only people who would go to such lenghts are the ones being deliberately malicious and going out of their way to do so - and what is the result? A win for you, the shop owner, who just sold all their stock in a legitimate playthrough (which could have still happened legitimately but at a slower pace), whereas the malicious actor just gets a bunch of garbage items they could have just spawned in creative. I truly suspect this is going to be a non-issue.

💬 Seralth, Oct 18th at 9:48 PM

Whats to stop someone from just buying everything nonstop using spawned in items on the global server? The idea is great but this feels problematic? Or am i missing something

 (edit comment delete)
Основной веб-сайт | Почтовый сервер | FTP сервер | Административная панель | API интерфейс | Content Delivery Network | Статические файлы | Ресурсы сайта | Изображения | Файловое хранилище | Блог | Интернет-магазин | Техническая поддержка | Справочная система | Документация | Форум | Новости | Загрузки | Демонстрация | Тестовая среда | Приложение | Медиа контент | Разработка | Промежуточная среда | Бета версия | Безопасная зона | Вход в систему | Панель управления | Портал | Система управления контентом