【问题标题】:Smart Contracts - How to agree on a value between parties?智能合约 - 如何在各方之间就价值达成一致?
【发布时间】:2022-10-25 09:14:18
【问题描述】:

我正在用 Solidity 编写一份关于联合销售 NFT 的智能合约。 在初始化合同时,由其中一位共同卖方选择利益的划分。例如,三个合作卖家可以选择 50%、25%、25%。

我的目标是,在销售发生之前,每个联合卖家都必须就分割价值达成一致。因为我想在“链上”进行,所以我想知道最好的方法是什么。

  • 在智能合约中包含一个函数,为每个共同卖家设置一个“同意的”布尔值
  • 要求co-seller签署当前的repartition并发送给智能合约
  • 其他

作为奖励,我还想知道如果出现分歧该怎么办。是否有任何已知的“链上”价值协商模式?

提前感谢您的回答:)

【问题讨论】:

    标签: cryptography blockchain solidity smartcontracts


    【解决方案1】:

    让我试一试:

    contract NFT_Price_Agreement {
    
        bool reachedAgreement = false;    
        uint numParties = 3;
        uint numSigned = 0;
        uint totalVal = 0;
    
        uint nftPrice = 1000000000000000000; // = 1 ether
    
        mapping(address => uint) public nftStake;
    
        function makeReq(uint reqStake) public {
            uint stake = nftPrice * (reqStake / 100);
            totalVal += stake; //  to make sure 100% ownership at the end
            nftStake[msg.sender] = stake;
            numSigned++;
        }
    
        function confirmReq() public {
            require(numSigned == numParties, "Not everyone has agreed on what percent ownership.");
            require(totalVal == nftPrice);
            reachedAgreement = true;
        }
    }
    

    虽然这目前会产生错误,但这是一般的想法。要中止请求并创建一个新请求,您只需拥有一个函数,该函数将您的映射重述为 0 以获取其请求的权益,并从 numSigned 减 1。尽管这段代码有一些问题,但这是一般的想法。

    【讨论】:

    • 嘿,感谢您的输入!如果我理解正确,您的想法是在销售开始之前设定一个固定价格,然后每个用户的股份总和必须对应于固定价格?您将如何解决没有固定价格而是让所有业主都同意的问题? (一个简单的例子是以平均价格主张为例)
    猜你喜欢
    • 1970-01-01
    • 2021-05-29
    • 2021-01-15
    • 2022-07-25
    • 2022-01-05
    • 2017-04-06
    • 1970-01-01
    • 2021-06-27
    • 2021-06-26
    相关资源
    最近更新 更多