Etherlinker for UE4 - interact with Ethereum blockchain from Unreal Engine 4

New update for UE 4.24 with solidity 0.5.0 support now available.

All built-in solidity contracts and Showcase level examples were updated.

If you’re using the UE4 version below 4.24, download an example project for 4.24 and use the integration server from it. Also, copy content from EtherlinkerExampleProject\Content\IntegrationServer into your project.

Some important info:

  • If in your custom contracts you’re using solidity version higher than in demo contracts, then you need to update version of web3j libraries (web3j-maven-plugin and org.web3j.core) and the version number in “EtherlinkerExampleProject\Content\IntegrationServer\compileContracts.bat/sh”
  • If in your custom contracts you’re using open zeppelin contracts, make sure that they aren’t duplicate existing demo contracts inside “EtherlinkerServer\Stratum\src\main\resources\solidity” (otherwise it’s better to update them).

Hi. I tried adding support for AUDIO coin with the Audius Contract address, Symbol, and Decimal. Unfortunately it keeps giving me the 0x error. I was using the contract from the EtherGald demo. I’m pretty new to this so my knowledge on contracts is rough and I’m not sure what to do at this point.

I did however get Ethereum to work. Just not other tokens yet.

Hey mate I don’t mind to collab

I am creating a project what will need a connection to Etherum/polygon
Let me know if we can talk…

1 Like

Sorry, I’m not actively working on this project at this moment (only adding support for new UE4/Solidity versions and fixing critical bugs) and I can’t help you with your projects due to lack of time for that.

Incredible achievement with the plugin! are you available for hire? would like you to customise this plugin for our project.
Would be great to have a discussion with you in private about this if possible?

Hi, Matthieu here from ConsenSys (MetaMask, Infura).
I am leading the work on our Web3 tokenization engine, would love to chat with people on this thread to understand how you interact with Web3, what pain points you have and what we can build to make your experience better.

1 Like

This plugin heavily relies on Web3J library (GitHub - web3j/web3j: Lightweight Java and Android library for integration with Ethereum clients) to interact with Ethereum blockchain.
Metamask is not supported and I don’t have time now to do R&D to connect to it from UE4 to ask wallet address/mnemonics or private key (don’t know even if it’s possible). If you can provide a working example of how to do that, I can integrate it.

As some of you may have found, this plugin is not available for purchase on UE Marketplace anymore.
Users who got it early, still can download it, but the update to UE 5 will be available only via BitBucket.
I will describe my point of view below on what happened.

Somebody wrote to marketplace support that this project is not secure and support removed this project from distribution. This user didn’t contact me.

Support told me the reason to stop distribution: “According to the information provided by our security team, the address and key used in this plugin should not be used since they are designed for testing integrations or setup.” As I understood they don’t like wallet generation or maybe auth with address/private key for some reason and as an example showed me that HardHat (Hardhat Network | Hardhat | Ethereum development environment for professionals by Nomic Foundation) wallet generation is not safe and it seems by their logic now all wallet generators after this aren’t safe. I personally didn’t hear about Hardhat, but Etherlinker uses Java’s SecureRandom (This class provides a cryptographically strong random number generator) to provide initial entropy, Web3j algorithms to generate wallets and can be protected with a password which the user can specify. I wrote this all to support and started to wait for the answer.

After a couple of weeks marketplace support provided more info on that case. It seems that the user got his wallet compromised somehow last autumn (wonder why he didn’t contact support earlier?) and now blame that it’s because of Etherlinker (since it was created in it according to his words). Marketplace security team tried to analyze Etherlinker code but didn’t find any specific exploit or code that will send data somewhere else. But people from Marketplace doesn’t want to risk and distribute this project if the plugin is not 100% safe (which is impossible anyway). Support asked to remove usage of private keys (auth/wallet creation) because security team told them that they can’t be used in production because it’s not secure (and this is in a world where Metamask blocks access for some countries, cryptocurrency exchanges also blocks accounts, even hardware wallets in theory can block access to their apps and you again have to use software alternatives).

I can only speculate what really happened:

  1. Somebody got access to the user’s PC and stole private key files, generated by Etherlinker in case they were created in local mode. User PC can be hacked or maybe someone has direct access to it or maybe the user exposed this info by himself somehow. If this is the case, then the user can blame only himself.
  2. Slander. For various reasons.
  3. Some unknown exploit in third-party libraries and since I’m not a hacker I can’t see it and fix it unless somebody will help me. But since 2019 at least wallets which I created for myself, wasn’t compromised and I didn’t receive any complaints from other users over these years.

There is nothing else that I can do. I can’t protect from human factors. Even hardware wallets can’t protect from them (like recent events with Trezor and phishing emails). Removing features is not the right way since then another guy can say that auth with mnemonic is not safe because it also can be stolen and block this project again. Or find another reason to block this project on the Marketplace.

So the plugin will be removed from the UE Marketplace and will be available only from BitBucket.

4 Likes

Is there a way to connect MetaMask to my UE4 game using Etherlinker?

MetaMask is not supported.

Thank you for letting me know! Is that just because Epic isn’t supporting MetaMask or is it because the Etherlinker doesn’t?

The problem with MetaMask according to this question: web3js - How to get privateKey from Metamask by code? - Ethereum Stack Exchange
is that there is no way to export private key from it via API. And since I’m signing transactions on Etherlinker side and not using MetaMask for that, I don’t see any ways to interact with it at this moment. Maybe it’s possible to find a solution but unfortunately I don’t have time to do such research at this moment. So the best way is to make a separate wallet for game inside that game and transfer ETH on it if you’re using Etherlinker and want to be safe.

there are video to show any tutorials for this ?

There are a couple of them
But it’s better to read docs.