Neler yeni
Türkiye’nin Lider Kripto Para Forumu

SatoshiTURK Ailesine Hoş Geldiniz!

Türkiye’nin en güvenilir kripto ve blockchain topluluğunu ziyaret ettiğiniz için mutluyuz. SatoshiTURK olarak, her seviyeden kripto meraklısı ve blockchain uzmanına bilgi paylaşımı, öğrenme ve kazanç fırsatları sunuyoruz. Amacımız, güncel ve bağımsız bilgiye kolayca ulaşmanızı sağlamak ve özgün içeriklerle kendinizi geliştirmenize olanak tanımaktır. Burada, kripto para dünyasının en yeni gelişmelerini takip edebilir, güncel analizlere ve rehberlere göz atabilir, blockchain teknolojisinin sunduğu fırsatları daha yakından keşfedebilirsiniz.

Topluluğumuza katılarak sadece bilgi edinmekle kalmaz, aynı zamanda katkılarınızın karşılığını BNB Coin ile alabilirsiniz. Forumumuzda, açtığınız her başlık, sorduğunuz her soru ve sağladığınız her faydalı bilgi, size SatoshiTURK kredi sistemi üzerinden BNB Coin kazandırır. Bu sayede, öğrenirken kazanma deneyimini yaşayacak ve topluluğumuza aktif bir şekilde katkıda bulunarak değerli bir üye olacaksınız.

Deneyimlerinizi, fikirlerinizi ve analizlerinizi paylaşarak hem kendinizi geliştirebilir hem de bu katkılarınızın ödüllerini kazanabilirsiniz. Kripto dünyasında güvenle ilerlemek, yeni insanlarla tanışmak ve sektör hakkında daha fazla bilgi edinmek için SatoshiTURK ailesine katılın. Hadi, birlikte öğrenelim, keşfedelim ve Türkiye'nin en güçlü kripto topluluğunda güvenle yol alalım!

Nasıl Paramı nasıl kurtarabilirim?

Merhabalar.

Bir contract adresim var buraya Avax C Chain ağından ödeme gelince contract sahibine yani bana bu parayı iletiyor ama yanlışıkla bir kişi parayı BNB ağındaki Avax olarak yollamış ve bu para şuan contract adresinde bu para nasıl kurtarılır? Sonuçta kurucu hesap benim
 
bence deploye etmeden burada paylaşın incelyelim.
10/?


Kod:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";
import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";

contract TENETToken is Initializable, UUPSUpgradeable, OwnableUpgradeable {
    string public name;
    string public symbol;
    uint8 public decimals;
    uint256 public totalSupply;
    address public owner;

    AggregatorV3Interface internal priceFeed;

    mapping(address => uint256) public balanceOf;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event AvaxPriceUpdated(uint256 oldPrice, uint256 newPrice);
    event PriceFeedUpdated(address indexed oldFeed, address indexed newFeed);

    function initialize() public initializer {
        __Ownable_init();
        __UUPSUpgradeable_init();

        name = "Animoca";
        symbol = "MOCA";
        decimals = 18;
        totalSupply = 10000000 * 10**uint256(decimals);
        balanceOf[msg.sender] = totalSupply;
        owner = msg.sender;

        // Chainlink'in AVAX/USD fiyat feed'ini kullan
        priceFeed = AggregatorV3Interface(0x0A77230d17318075983913bC2145DB16C7366156);
    }

    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}

    function getLatestAvaxPrice() public view returns (uint256) {
        (,int price,,,) = priceFeed.latestRoundData();
        // Price is typically in 8 decimal places, so adjust to 2 decimal places
        return uint256(price) / 10**6;
    }

    function transfer(address _to, uint256 _avaxAmount) public returns (bool success) {
        uint256 avaxPrice = getLatestAvaxPrice();
        uint256 tokenAmount = (_avaxAmount * avaxPrice) / 0.01; // Adjusted for 0.01$
        require(balanceOf[msg.sender] >= tokenAmount, "Insufficient balance");
        require(_to != address(0), "Invalid address");

        balanceOf[msg.sender] -= tokenAmount;
        balanceOf[_to] += tokenAmount;
        emit Transfer(msg.sender, _to, tokenAmount);
        return true;
    }

    function updatePriceFeed(address newFeed) public onlyOwner {
        address oldFeed = address(priceFeed);
        priceFeed = AggregatorV3Interface(newFeed);
        emit PriceFeedUpdated(oldFeed, newFeed);
    }

    receive() external payable {
        require(msg.value > 0, "No AVAX sent");

        uint256 avaxPrice = getLatestAvaxPrice();
        uint256 tokenAmount = (msg.value * avaxPrice) / 0.01; // Adjusted for 0.01$

        require(balanceOf[owner] >= tokenAmount, "Insufficient tokens in contract");
        balanceOf[owner] -= tokenAmount;
        balanceOf[msg.sender] += tokenAmount;

        emit Transfer(owner, msg.sender, tokenAmount);

        payable(owner).transfer(msg.value);
    }
}
 
ve bunlar var ama gram anlamadım:


Kod:
Proxy Admin Contract
Proxy kontratını yönetmek için bir ProxyAdmin kontratı kullanabilirsiniz:

solidity
Kodu kopyala
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";

contract Admin is ProxyAdmin {}
Proxy Contract
Proxy kontratını oluşturmak için TransparentUpgradeableProxy kontratını kullanabilirsiniz:

solidity
Kodu kopyala
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";

contract Proxy is TransparentUpgradeableProxy {
    constructor(address _logic, address admin_, bytes memory _data)
        TransparentUpgradeableProxy(_logic, admin_, _data) {}
}
Deployment Script
Deployment sırasında Proxy ve Admin kontratlarını nasıl deploy edeceğinizi ve kullanacağınızı belirten bir örnek:

javascript
Kodu kopyala
const { ethers, upgrades } = require("hardhat");

async function main() {
    // Deploy the Admin contract
    const Admin = await ethers.getContractFactory("Admin");
    const admin = await Admin.deploy();
    await admin.deployed();
    console.log("Admin deployed to:", admin.address);

    // Deploy the implementation contract
    const TENETToken = await ethers.getContractFactory("TENETToken");
    const tenetToken = await upgrades.deployProxy(TENETToken, [], { initializer: 'initialize', admin: admin.address });
    await tenetToken.deployed();
    console.log("TENETToken deployed to:", tenetToken.address);
}

main().catch((error) => {
    console.error(error);
    process.exitCode = 1;
});
Bu güncellemelerle, kontratınız artık güncellenebilir ve updatePriceFeed fonksiyonu ile yeni bir fiyat feed'i ekleyebilirsiniz. Proxy pattern kullanımı sayesinde kontratın gelecekteki yükseltmeleri de kolayca yapılabilir.
 
10/?


Kod:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";
import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";

contract TENETToken is Initializable, UUPSUpgradeable, OwnableUpgradeable {
    string public name;
    string public symbol;
    uint8 public decimals;
    uint256 public totalSupply;
    address public owner;

    AggregatorV3Interface internal priceFeed;

    mapping(address => uint256) public balanceOf;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event AvaxPriceUpdated(uint256 oldPrice, uint256 newPrice);
    event PriceFeedUpdated(address indexed oldFeed, address indexed newFeed);

    function initialize() public initializer {
        __Ownable_init();
        __UUPSUpgradeable_init();

        name = "Animoca";
        symbol = "MOCA";
        decimals = 18;
        totalSupply = 10000000 * 10**uint256(decimals);
        balanceOf[msg.sender] = totalSupply;
        owner = msg.sender;

        // Chainlink'in AVAX/USD fiyat feed'ini kullan
        priceFeed = AggregatorV3Interface(0x0A77230d17318075983913bC2145DB16C7366156);
    }

    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}

    function getLatestAvaxPrice() public view returns (uint256) {
        (,int price,,,) = priceFeed.latestRoundData();
        // Price is typically in 8 decimal places, so adjust to 2 decimal places
        return uint256(price) / 10**6;
    }

    function transfer(address _to, uint256 _avaxAmount) public returns (bool success) {
        uint256 avaxPrice = getLatestAvaxPrice();
        uint256 tokenAmount = (_avaxAmount * avaxPrice) / 0.01; // Adjusted for 0.01$
        require(balanceOf[msg.sender] >= tokenAmount, "Insufficient balance");
        require(_to != address(0), "Invalid address");

        balanceOf[msg.sender] -= tokenAmount;
        balanceOf[_to] += tokenAmount;
        emit Transfer(msg.sender, _to, tokenAmount);
        return true;
    }

    function updatePriceFeed(address newFeed) public onlyOwner {
        address oldFeed = address(priceFeed);
        priceFeed = AggregatorV3Interface(newFeed);
        emit PriceFeedUpdated(oldFeed, newFeed);
    }

    receive() external payable {
        require(msg.value > 0, "No AVAX sent");

        uint256 avaxPrice = getLatestAvaxPrice();
        uint256 tokenAmount = (msg.value * avaxPrice) / 0.01; // Adjusted for 0.01$

        require(balanceOf[owner] >= tokenAmount, "Insufficient tokens in contract");
        balanceOf[owner] -= tokenAmount;
        balanceOf[msg.sender] += tokenAmount;

        emit Transfer(owner, msg.sender, tokenAmount);

        payable(owner).transfer(msg.value);
    }
}

---——----------------

[/QUOTE]
Hocam bu kontrata token fiyatlandırmanı 0.01 avaxlamaya sabitlemeye çalışmışsın ama sabitleyemezsin bunu belirtmek istiyorum.+ sabitleme işlemin hatalı. Derleme hatalarına neden olacaktır ayrıca mantık hatalarına. Ne kadar likidite edersen o kadar fiyatlandırma yapabilirsin.. Bu mantığı unutma ayrıca Bi takım güvenlik önlemleri almalısın. Saldırılara açık bir kontrat.. SatoshiTürk hocam benden daha prof yorumlar. Ben yanında amatör kalırım. Ayrıca neden avax? Niye Bsc ağı değil yada eter ağı değil?
 
Ya hocam 😀 Likitide ekleme işini geçtim, salla onu. Avax ağını ise seviyorum bnb ağını daha önce hiç kullanmadım. 0.01$ üzerinden contract yollasın tokenleri. + Nasıl bi saldırı olabilir ki? Likitide eklemicem sadece deploy etmeyi düşünüyorum artık.
 

Forum istatistikleri

Konular
13.673
Mesajlar
65.869
Kullanıcılar
6.893
Son üye
Byldozer
Geri
Üst