IPP swap孵化器|IPP算力挖礦|ippswap模式系統開發

lxqy16688發表於2023-05-10

IPP系統開發,{I88公鏈-I928合約-開發8024}有的時候,一個應用是由多個合約組成的。比如,我曾經建立過一個應用,它是由三個合約組成的並且彼此之間需要互動,但是我沒法將它部署在以太坊的主網上,因為它們佔的空間太大了,超出了區塊限制。我不得不將這個應用重構為5個更小的智慧合約,這樣這個應用才可以被髮布。

  

  通證的鑄造者和發行人,透過一個合約來呼叫通證的智慧合約來發行它。

  

  去中心化交易所(DEX)在進行通證交易的時候,一直都需要和其他智慧合約相互動。

  

  當你想透過Chainlink Data Feed獲得一個通證價格的時候,你的智慧合約也需要和資產的aggregator相互動,這裡的aggregator也是一個智慧合約。

  

  當你使用Chainlink VRF的時候,你的合約需要給VRF Coordinator傳送一個請求,Coordinator才可以將隨機數傳送回你的智慧合約。

  

  在透過Chainlink Keepers自動化執行智慧合約的時候,你需要建立Keepers Upkeep,而Upkeep需要透過一個合約來檢視和執行你部署的使用者合約。

  

  為什麼要在一個合約中呼叫另外一個合約的函式?

  

  另一個有趣的應用場景是可升級的合約。區塊鏈是不可更改的,這就意味著在智慧合約部署以後,程式碼就不能被修改了。但是可以透過代理函式來指向其他合約來完成“升級”。

  

  如果你想要改變邏輯,你可以給代理合約提供一個不同的目標合約地址,比如一個更新過的合約。還可以把邏輯和資料分到不同的智慧合約中。這樣,邏輯合約可以被代理合約升級或者替換,但是所有的資料還是儲存在資料合約之中。

  

  這個特性非常有用,因為它允許程式碼被重複利用,部署的合約可以被當成一個庫來使用。因此,它還可以減少部署時的消耗,因為當合約可以被重複使用的時候,每次新的應用需要部署的合約就可能變少。

  

  CounterCaller合約

  

  現在我們第一個合約Counter已經部署了,讓我們建立另一個合約來使用Counter合約中的increment函式。這個機制就像是依賴注入(Dependency Injection),呼叫者可以透過合約函式的簽名和變數來初始化一個合約。

  

  在Contract.sol檔案的底部複製和貼上以下的程式碼:

  

  contract CounterCaller{

  

  Counter public myCounter;

  

  constructor(address counterAddress){

  

  myCounter=Counter(counterAddress);

  

  }

  

  function counterIncrement()external{

  

  myCounter.increment();

  

  }

  

  }


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70029086/viewspace-2951104/,如需轉載,請註明出處,否則將追究法律責任。

相關文章