/ main.go
main.go
1 package main 2 3 import ( 4 "fmt" 5 "log" 6 7 "icp-agent/internal/agent" 8 "icp-agent/internal/canister" 9 "icp-agent/internal/identity" 10 "icp-agent/internal/ledger" 11 "icp-agent/internal/principal" 12 ) 13 14 func main() { 15 fmt.Println("ICP Agent - Go Implementation") 16 fmt.Println("================================") 17 18 // Example: Create an Ed25519 identity 19 iden, err := identity.GenerateEd25519Identity() 20 if err != nil { 21 log.Fatalf("Failed to generate identity: %v", err) 22 } 23 sender, _ := iden.Sender() 24 fmt.Printf("Identity created: %s\n", sender) 25 26 // Example: Create an agent 27 agentBuilder := agent.NewAgentBuilder() 28 a, err := agentBuilder. 29 WithURL("https://ic0.app"). 30 WithIdentity(iden). 31 Build() 32 if err != nil { 33 log.Fatalf("Failed to build agent: %v", err) 34 } 35 fmt.Printf("Agent created with URL: %s\n", a.GetURL()) 36 37 // Example: Create a principal 38 p := principal.ManagementCanister() 39 fmt.Printf("Management canister: %s\n", p.String()) 40 41 // Example: Create a canister 42 can, err := canister.NewCanister("ryjl3-tyaaa-aaaaa-aaaba-cai", a) 43 if err != nil { 44 log.Fatalf("Failed to create canister: %v", err) 45 } 46 fmt.Printf("Canister ID: %s\n", can.ID().String()) 47 48 // Example: Create an account ID 49 accountID, err := ledger.NewAccountID(p, nil) 50 if err != nil { 51 log.Fatalf("Failed to create account ID: %v", err) 52 } 53 fmt.Printf("Account ID: %s\n", accountID.ToHex()) 54 55 fmt.Println("\n================================") 56 fmt.Println("All modules working correctly!") 57 }