CryptoFly.us | CRYPTOCURRENCY BITCOIN SHIRTS CLOTHING APPAREL HATS

CRYPTO NEWS

Investment app Plum raises $14M ahead of crowdfunding campaign

The firm hopes to raise a total of $24 million in funding to expand across Europe

UK-based investment app Plum has raised $14 million as part of its series A funding round, according to a press release shared on Friday.

The platform, which has offices in London, Athens and Nicosia, has said the funds will be added to during a crowdfunding campaign scheduled for later this October, with the funding expected to rise to $24 million for its Series A financing round.

According to Yahoo Finance UK, over 20,000 people have already shown interest in Plum’s crowdfunding round through Crowdcube.

In July 2020, the company netted $10 million in a funding round led by Global Brain, EBRD and VentureFriends. The latest investment round has seen new backers Ventura Capital and dmg ventures join the above investors. There was also significant participation from angel investors.

Expansion and crypto

Plum hopes to use the funds to accelerate its expansion across Europe, where it currently targets reaching over 300 million people by the end of next year.

The expansion includes plans to roll out a spending card and US stocks before the end of 2021, and crypto-asset products by the summer of 2022 as it bids to become the leading investment app in Europe.

According to Victor Trokoudes, the platform’s co-founder and CEO, Plum is quickly turning into a “super app”, as demand among investors continues to grow.

“But there’s a lot more work to be done. The appetite for smart and intuitive investment products is enormous, particularly in other parts of Europe where often old-fashioned banks are the only financial option for growing your money,” Trokoudes added in a statement.

Plum’s USP is its AI-powered technology that automates saving and investment for clients. The app makes handling personal finances easier, especially for those likely to find this part of their life difficult to go about.

The post Investment app Plum raises $14M ahead of crowdfunding campaign appeared first on Coin Journal.

Uniswap V3 SwapExactInputSingle keeps failing with string "STF"

I am trying to make a simple contract that swaps DAI for WETH9 using Uniswap V3, but whenever I call my function through a script I wrote, it keeps failing with string STF. I think I’m doing approvals correctly but I would like to know the solution. Thank you. swapTokens.js: // but useful for running::Listen

I am trying to make a simple contract that swaps DAI for WETH9 using Uniswap V3, but whenever I call my function through a script I wrote, it keeps failing with string STF. I think I’m doing approvals correctly but I would like to know the solution. Thank you.

Error Message

swapTokens.js:

// but useful for running the script in a standalone fashion through `node <script>`. // // When running the script with `npx hardhat run <script>` you'll find the Hardhat // Runtime Environment's members available in the global scope. const hre = require("hardhat"); const DaiAbi = require("../abi/daiAbi.json"); async function main() {     const DAI = "0x6B175474E89094C44Da98b954EedeAC495271d0F";     const MY_ACC = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266";     // Hardhat always runs the compile task when running scripts with its command     // line interface.     //     // If this script is run directly using `node` you may want to call compile     // manually to make sure everything is compiled     // await hre.run('compile');      // We get the contract to deploy     const MultiSigStaker = await hre.ethers.getContractFactory("StakingWallet");     const multiSig = await MultiSigStaker.deploy("0xE592427A0AEce92De3Edee1F18E0157C05861564");      await multiSig.deployed();      console.log("Contract deployed to:", multiSig.address);     const signerAccount = await hre.ethers.getSigner(MY_ACC);     const daiContract = new hre.ethers.Contract(DAI, DaiAbi, signerAccount);     const approved = await daiContract.connect(signerAccount).approve("0xE592427A0AEce92De3Edee1F18E0157C05861564", 1000000000);     console.log("Spending approved");     let txn = await multiSig.swapExactInputSingle(100000000);     await txn.wait();     const accountBalance = await daiContract.balanceOf(MY_ACC);     console.log("Transfer complete. Account DAI balance is:", accountBalance / 1e18);    }  // We recommend this pattern to be able to use async/await everywhere // and properly handle errors. main()     .then(() => process.exit(0))     .catch((error) => {         console.error(error);         process.exit(1);     }); 

fundDai.js:

  // Hardhat always runs the compile task when running scripts with its command   // line interface.   //   // If this script is run directly using `node` you may want to call compile   // manually to make sure everything is compiled   // await hre.run('compile');    // We get the contract to deploy    const DAI = "0x6B175474E89094C44Da98b954EedeAC495271d0F";   const DAI_WHALE = "0x6F6C07d80D0D433ca389D336e6D1feBEA2489264";   const MY_ACC = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266";    await hre.network.provider.request({     method: "hardhat_impersonateAccount",     params: [DAI_WHALE],   });   console.log("DAI Whale impersonated with address:", DAI_WHALE);   const signer = await hre.ethers.getSigner(DAI_WHALE);   const daiContract = new hre.ethers.Contract(DAI, DaiAbi, signer);   const daiBalance = await daiContract.balanceOf(DAI_WHALE);   console.log("whale balance:", daiBalance / 1e18);   console.log("Transferring DAI to:", MY_ACC);   await daiContract.connect(signer).transfer(MY_ACC, daiBalance);   const accountBalance = await daiContract.balanceOf(MY_ACC);   console.log("Transfer complete. Account DAI balance is:", accountBalance / 1e18);   const afterBalance = await daiContract.balanceOf(DAI_WHALE);   console.log("Whale new balance:", afterBalance / 1e18);   }  // We recommend this pattern to be able to use async/await everywhere // and properly handle errors. main()   .then(() => process.exit(0))   .catch((error) => {     console.error(error);     process.exit(1);   }); 

StakingWallet.sol:

pragma solidity >=0.7.0 <0.9.0; pragma abicoder v2; import "hardhat/console.sol"; import "@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol"; import "@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol";  contract StakingWallet {     ISwapRouter public immutable swapRouter;     address public constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;     address public constant WETH9 = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;     address public constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;      // For this example, we will set the pool fee to 0.3%.     uint24 public constant poolFee = 3000;      constructor(ISwapRouter _swapRouter) {         swapRouter = _swapRouter;     }      function swapExactInputSingle(uint256 amountIn)         external         returns (uint256 amountOut)     {         TransferHelper.safeTransferFrom(             DAI,             msg.sender,             address(this),             amountIn         );         TransferHelper.safeApprove(DAI, address(swapRouter), amountIn);         ISwapRouter.ExactInputSingleParams memory params = ISwapRouter             .ExactInputSingleParams({                 tokenIn: DAI,                 tokenOut: WETH9,                 fee: poolFee,                 recipient: msg.sender,                 deadline: block.timestamp,                 amountIn: amountIn,                 amountOutMinimum: 0,                 sqrtPriceLimitX96: 0             });         amountOut = swapRouter.exactInputSingle(params);     } } 

I can post my hardhat config file too if it is causing errors, since I had to fiddle with it a bit to fork the mainnet successfully, but I don’t think it causes any issues.

Investment app Plum raises $14M ahead of crowdfunding campaign

Shopping cart
There are no products in the cart!
Continue shopping
0